[英]wait()/waitpid() returns 1, not pid of child, how to fix that?
這是一個跟進如何在父母被發信號殺死孩子的時候將其他參數壓入收割者功能(c)?
在我的收割機()中,我試圖獲得父母即將完成的孩子的pid(這里是非殘酷的詞)。 但是wait()不會返回孩子的pid; 相反,它返回1.我無法在任何地方找到返回值為1的doc。 抬頭?
void reaper(int sig)
{
int status, killedpid;
while(killedpid = (/*waitpid(-1, &status, WNOHANG)*/wait(&status)) >= 0)
{
printf("reaper %d killed %d\n", getpid(), killedpid);
}
}
我的結果:
reaper 5933 killed 1 //actual child pid is 5936
先感謝您!
這是條件錯誤中的經典賦值 - 表達式計算如下(因為比較具有更高的優先級,然后賦值):
if ( killedpid = ( wait( &status ) >= 0 )) { ...
該killedpid
將獲得TRUE值,這是1
在C.為了解決這個問題使用括號和高警告級別像編譯 -Wall -pedantic
:
if (( killedpid = wait( ... )) >= 0 ) { ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.