第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

檢查 exec.Command 是否退出

檢查 exec.Command 是否退出

Go
哈士奇WWW 2022-10-24 15:11:08
我正在嘗試制作一個(gè)可以運(yùn)行可執(zhí)行文件的程序,并獲取可執(zhí)行文件是否在 2 秒內(nèi)退出files, _ := ioutil.ReadDir("Files/")for _, f := range files {    cmd := exec.Command(fmt.Sprint("Files/", f.Name()))    cmd.Start()    time.Sleep(2 * time.Second)    if cmd.ProcessState.Exited() {        fmt.Println("Exited")    } else {        fmt.Println("Not exited")    }}這給出了一個(gè)panic: runtime error: invalid memory address or nil pointer dereference因?yàn)樗€沒有設(shè)置(如果我使用cmd.Run()它可以工作,但這會(huì)破壞整個(gè)目的)。我已經(jīng)嘗試尋找其他方法來做到這一點(diǎn),但我找不到任何其他方法。還有其他方法可以做到這一點(diǎn)嗎?如果是這樣,我該如何使用它?
查看完整描述

2 回答

?
慕容森

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊

始終檢查錯(cuò)誤。


從cmd.Start 文檔


如果 Start 返回成功,將設(shè)置c.Process字段。


所以確保cmd.Start沒有出錯(cuò):


err := cmd.Start()

if err != nil {

    log.Fatalf("cmd.Start error: %v", err)

}

也來自exec.Cmd 文檔:


// ProcessState contains information about an exited process,

// available after a call to Wait or Run.

ProcessState *os.ProcessState

// contains filtered or unexported fields

因此,如果該過程尚未完成,ProcessState則將為零-因此您將遇到運(yùn)行時(shí)恐慌。


查看完整回答
反對 回復(fù) 2022-10-24
?
偶然的你

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊

這對我有用:


files, _ := ioutil.ReadDir("Files/")


for _, f := range files {

    cmd := exec.Command(fmt.Sprint("Files/", f.Name()))

    cmd.Start()

    time.Sleep(2 * time.Second)


    check, _ := exec.Command("tasklist", "/FI", "PID eq "+fmt.Sprint(cmd.Process.Pid)).Output()

    output := string(check)

    if strings.HasPrefix(output, "INFO: No tasks are running") {

        fmt.Println("Exited")

    } else {

        fmt.Println("Still running")

    }

}


查看完整回答
反對 回復(fù) 2022-10-24
  • 2 回答
  • 0 關(guān)注
  • 167 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號