0
我有这样的代码:C++检查儿童状况
fork();
if child:
execvp("sth"); //Just returns if errors
if parent:
save child pid;
在花药功能我要检查,如果孩子完成或没有,我不希望使用waitpid
。有没有其他方法可以做到这一点?
我有这样的代码:C++检查儿童状况
fork();
if child:
execvp("sth"); //Just returns if errors
if parent:
save child pid;
在花药功能我要检查,如果孩子完成或没有,我不希望使用waitpid
。有没有其他方法可以做到这一点?
您可以设置一个信号处理程序来处理SIGCHLD,该信号处理程序将在子结束时传递给父项。从技术上讲,即使它是异步调用,也是“另一个功能”。即使在获得信号后,您仍然应该使用waitpid
,如果您有多个孩子,这是我知道您将能够区分他们的唯一方法。
我终于用'waitpid'和'WNOHANG',解决了我的一些问题。 –
为什么你不想使用'waitpid()'? –
http://linux.die.net/man/2/waitpid如果你使用'options = WNOHANG',waitpid'不会阻塞(如果没有孩子退出,立即返回)。 –
我用'waitpid'和WNOHANG在最后解决我的问题一些如何。 –