2011-04-26 50 views

回答

5

當您fork時,子進程中的返回值爲0,父進程中的子進程ID(pid)爲0。

然後,您可以使用該pid調用kill以查看它是否仍在運行,或請求關閉。要檢查進程是否正在運行,請使用0作爲信號,然後檢查返回值(0 ==正在運行; -1 ==未運行)。要請求關機,請使用SIGTERM作爲信號。

1

可能是我知道的fork()後進程之間溝通的最佳方式是通過插座(參見socketpair())。

從那裏,你可以通過定義一個通信協議(包括終止請求)來完成任何工作。

0

fork()通話後,您可以使用wait(&status_int)waitpid(child_pid, &status_int, WNOHANG)檢測兒童的返回狀態,使用後者,如果你不希望阻止等待一個孩子。傳遞的參數&status_int將是一個指向int的指針,它將在退出後保留子進程的返回狀態。如果您想等待任何分支過程完成,並且不關心返回值,則可以簡單地撥打wait(NULL)或非阻止版本waitpid(-1, NULL, WNOHANG)