在某些线程库中,线程中通过fork创建的子进程无法通过wait或waitpid清理掉,原因是线程里面屏蔽的SIG_CHLD信号。
可在线程主函数加入以下代码解决:
signal(SIGCLD, SIG_IGN); /* don‘t need to wait child process */
忽略这个信号后的作用是,告诉系统不关心子进程的执行返回值,系统可以自动回收所有结束的子进程。
时间: 2024-08-25 22:07:12
在某些线程库中,线程中通过fork创建的子进程无法通过wait或waitpid清理掉,原因是线程里面屏蔽的SIG_CHLD信号。
可在线程主函数加入以下代码解决:
signal(SIGCLD, SIG_IGN); /* don‘t need to wait child process */
忽略这个信号后的作用是,告诉系统不关心子进程的执行返回值,系统可以自动回收所有结束的子进程。