0
我試圖正確地終止命令結束進程和子進程
c := exec.Command("omxplayer", "video.mp4")
c.Start()
// send kill signal to terminate command at later stage
time.Sleep(4*time.Second)
c.Process.Kill()
c.Wait() // should wait for program to fully exit
// start again with new video
c := exec.Command("omxplayer", "video2.mp4")
c.Start()
我想殺死我的樹莓丕當前omxplayer
過程,這樣我就可以開始再次用一個新的視頻。
一旦我發送了Kill
信號,我打電話c.Wait()
等待當前命令結束後再開始一個新的命令。
問題是第一個命令沒有停止,但是下一個命令仍在啓動。所以我最終同時播放了多個視頻。
'omxplayer'可能是派生一個新的進程。如果是這種情況,您可能不得不搜索其pid,以表明它是否沒有提供關閉它的機制。 – JimB
使用'pstree -p'查看'omxplayer'(如果有)分叉的進程。 – putu
父進程也可能需要清理,但是您不會通過發送SIGKILL來讓它進行清理。看看SIGTERM或SIGINT會發生什麼。 – JimB