我正在C中運行子進程,我想暫停然後運行相同的子進程。由於我是新手,所以不太確定如何更好地描述我的問題,但這裏有一個鏡頭。在C中運行/暫停子進程?
因此,我知道您可以在另一個進程退出後使用waitpid
運行進程。但是,如果我在等待的過程的創建過程中不存在我等待的過程。所以在這種情況下,我正在考慮暫停執行等待的流程,等待的流程創建完成並完成後,它會調用等待再次運行的流程。那麼你會如何做到這一點?再一次,我對此並不熟悉,所以我不知道這是否是正確的方法。
編輯:我試圖
我用的子進程通過execvp()
並行運行的命令,所以如果我有一個序列sleep 1; sleep 1;
做,總睡眠時間爲1秒。然而,有些情況下我試圖平行echo blah > file; cat < file;
,在這種情況下,我假設cat
在echo
向文件輸入blah後讀取文件。因此,我必須等待echo
才能完成cat
。這裏有更多的細節,但通常假設任何帶有輸出到文件的命令都必須由稍後在腳本中讀取文件的任何命令來等待。
你的外在問題是什麼?爲什麼你甚至需要一個等待的過程? – 2012-02-03 20:35:08
當你調用fork()時你得到PID;如果您還沒有看到Beej指南,我會建議您這樣做:http://beej.us/guide/bgipc/output/html/multipage/fork.html如果您需要知道孩子何時完成,那麼您需要某種類型的IPC。 – EdH 2012-02-03 20:36:36
這是操作系統相關的,它不是標準C的一部分,所以你需要對你寫的東西更具體些。我假設*尼克斯。 – 2012-02-03 20:36:52