在我的reaper()中,我尝试获取父母即将完成的孩子的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提前谢谢你!
发布于 2010-12-11 12:27:28
这是conditional error中的经典赋值-表达式的求值如下(因为比较比赋值具有更高的precedence ):
if ( killedpid = ( wait( &status ) >= 0 )) { ...killedpid将获得TRUE值,在C中为1。要解决此问题,请使用括号和编译高警告级别,如-Wall -pedantic
if (( killedpid = wait( ... )) >= 0 ) { ...https://stackoverflow.com/questions/4415168
复制相似问题