我有这样的代码:
fork();
if child:
execvp("sth"); //Just returns if errors
if parent:
save child pid;
在花药功能中,我想检查孩子是否完成,我不想使用waitpid
。还有其他办法吗?
答案 0 :(得分:1)
您可以设置信号处理程序来处理SIGCHLD,当孩子结束时,SIGCHLD将被传递给父母。从技术上讲,这是“另一个功能”,即使它是异步调用的。即使在获得信号之后你仍然应该使用waitpid
,如果你有多个孩子,这是我知道你能够区分它们的唯一方式。