0

我有这样的代码:

fork();
if child:
   execvp("sth");   //Just returns if errors
if parent:
   save child pid;

在另一个函数中,我想检查孩子是否完成,我不想使用waitpid. 有没有其他方法可以做到这一点?

4

1 回答 1

1

您可以设置一个信号处理程序来处理 SIGCHLD,它将在子进程结束时传递给父进程。从技术上讲,这是“另一个函数”,即使它是异步调用的。即使在收到信号后你仍然应该使用waitpid,如果你有多个孩子,这是我知道你能够区分他们的唯一方法。

于 2012-11-20T06:48:00.313 回答