回收子进程
为什么要回收子进程
1.清除僵尸进程,避免消耗系统资源
2.父进程需要等待子进程终止,以继续后续工作
3.父进程需要知道子进程终止的原因
如果是正常终止,那么进程的退出码是多少
如果是异常终止,那么进程是被哪个信号所终止的
wait
#include
pid_t wait(int* status);
功能:等待并回收任意子进程,谁先死收谁
子进程结束后会留下一个整型退出码的终止状态,终止状态包含退出码,异常结束则是信号
参数:status用于输出子进程的终止状态,可置NULL(不关心终止状态时可输入NULL)
返回值:成功返回所回收的子进程PID,失败返回-1
父进程调用wait,子进程不死父进程阻塞在这个函数上
stat("./abc.txt",&s)获取元数据,输出型参数,放到s结构体上
父进程在创建若干子进程以后调用wait函数:
A.若所有子进程都在运行,则阻塞,直到所有子进程终止才返回

本文介绍了回收子进程的重要性,包括防止僵尸进程、获取子进程状态和资源释放。详细讲解了wait函数的功能和使用,如等待任意子进程结束,获取子进程的PID和终止状态,并清理僵尸进程。此外,还讨论了waitpid函数,它允许指定等待特定子进程,支持阻塞和非阻塞模式。最后提到了通过处理SIGCHLD信号来异步回收子进程的方法,以提高效率。
1346

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



