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í)恐慌。

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")
}
}
- 2 回答
- 0 關(guān)注
- 167 瀏覽
添加回答
舉報(bào)