2012-06-13 68 views
-3

叉已经发生代码:wait()和出口()与亲子处理

if (pid == 0) { 
    printf("I am child PID %d\n", getpid()); 
    exit(EXIT_SUCCESS); 
} else { 
    pid_t child; 
    int status; 
    //need wait() function that gets child pid and exit status 
    printf("Child PID %d terminated with return status %d\n", child, status); 
} 

如上代码注释,我需要一个适当的等待功能,将等待孩子结束,获取孩子的PID和结果退出状态代码。谢谢!

+4

-1你认真吗?你搜索了多少?如何等待()? –

+0

我想我可能对实施感到困惑。 wait()返回一个PID值,所以如果我这样做:child = wait(&status);它应该返回孩子的PID,对吧?我得到-1的孩子的价值。 – Jordan

+2

阅读说明书,它解释了一切。 '如果wait()或waitpid()由于向调用进程传递一个信号而返回,则返回-1并将errno设置为[EINTR]。 –

回答

0

您可以使用wait()waitpid()(同一页,真的)。或者,如果您使用的是BSD,wait3()wait4()(但不是,AFAIK,wait2())。