[問題] wait & waitpid
大家晚安
我有一段code
exe_command(cmd); //cmd 做 sed -i /server/d /etc/ntp.conf
...
...
...
exe_command(cmd) //cmd 做 echo server xxxx.xxx.xxx >> /etc/ntp.conf
用測試程式執行一兩次發現 ntp.conf 經常是空的,把前面 command 刪除則正常加入
但前面的command要保留不能刪除
看進去
exe_command:
pid = fork();
if(pid < 0) {}
else if(pid > 0) {
wait(&staus); //----->這邊改成waitpid(pid, &staus, 0)就可以解了
if(status) {
ERR(...);
return -1;
}
} else {
if(execvp(...) < 0)
exit(EXIT_FALURE);
exit(EXIT_SUCCESS);
}
這之間的差異是wait只要是任何一個子process結束後就會讓wait離開
waitpid 是要等待一個特定的子process結束才會離開
但還是想不透說是甚麼樣的timing這問題才會產生?
原本想說後面的子行程先執行才執行前面的,才會造成。但wait一定是block住才能
進行下一個command阿...
謝謝指教QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.78.101 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1635263668.A.40E.html
推
10/27 09:31,
2年前
, 1F
10/27 09:31, 1F
→
10/27 09:34,
2年前
, 2F
10/27 09:34, 2F
→
10/27 09:35,
2年前
, 3F
10/27 09:35, 3F
→
10/28 21:12,
2年前
, 4F
10/28 21:12, 4F