pid_t r_wait(int * stat_loc)
{
int revalue;
while(((revalue = wait(stat_loc)) == -1) && (errno == EINTR));//如果等待的过程中被一个不可阻塞的信号终断则继续循环等待
return revalue;
}服务退出之前父进程等待子进程的调用方法:
while(r_wait(NULL) > 0);//wait for all the subprocess.在多进程程序中用于收集已退出进程的方法:
signal(SIGCHLD,sigchld_handler);void sigchld_handler(int signo)
{
pid_t pid;
while((pid = waitpid(-1,NULL,WNOHANG)) > 0)
cout<<"pid "<<pid<<" exited !"<<endl;
}
本文介绍了在多进程程序中如何有效地管理子进程并回收已退出的子进程资源。通过使用wait和waitpid函数,结合SIGCHLD信号处理机制,确保了程序能够正确地处理子进程的结束状态。
498

被折叠的 条评论
为什么被折叠?



