1
爲了知道是否等待()工作過,會是正確的,以檢查它像下面?從理論上講,如果等待()不會失敗,應該返回到父進程結束的孩子PID,否則父PID爲1,對不對?察看wait()的失敗
switch (process = fork())
{
case -1:
// Fork fail
perror("Fork failed");
exit(EXIT_FAILURE);
case 0:
//Child process
HERE CODE DOES SOMETHING
exit(EXIT_SUCCESS);
default:
//Parent process
pid=wait(&status);
if(pid==1){
perror("Wait failed");
}else{
exit(EXIT_SUCCESS);
}
}
閱讀函數的文檔主要是幫助:http://man7.org/linux/man-pages/man2/waitpid.2 html的 – alk
除此之外'wait'返回-1,而不是1的錯誤,這是包含在現有的答案的情況下,可以考慮使用'waitpid',以確保您正在等待你只是派生的過程,而不是事實第一個子進程發生退出(可能會被分離出來,或者被另一個線程分離)。此外,這是一個好主意,調用'_exit',而不是'exit',以防止子進程繼承了父母的stdip緩衝區無意沖洗。 – user4815162342
@ user4815162342謝謝。 – krm