我知道waitpid()用于等待一个进程完成,但是如何才能正确使用它?
这里我想做的是创建两个孩子,等待第一个孩子完成,然后在退出之前杀死第二个孩子.
//Create two children pid_t child1; pid_t child2; child1 = fork(); //wait for child1 to finish,then kill child2 waitpid() ... child1 { kill(child2) }
解决方法
waitpid()的语法:
pid_t waitpid(pid_t pid,int *status,int options);
pid的值可以是:
>< -1:等待进程组ID等于pid绝对值的任何子进程.
> -1:等待任何子进程.
> 0:等待流程组ID等于调用进程的子进程.
>> 0:等待进程ID等于pid值的小孩.
选项的值为以下常量中的零个或多个OR:
> WNOHANG:如果没有孩子退出,马上回来.
> WUNTRACED:如果孩子已经停止,也返回.即使未指定此选项,也提供已停止的跟踪儿童的状态.
> WCONTINUED:如果通过发送SIGCONT恢复了已停止的小孩,则返回.
要获得更多帮助,请使用man waitpid.