admin 管理员组文章数量: 887032
linux信号函数signal(SIGCHLD, SIG
我们调用fork函数派生一个子进程后,当子进程快要结束,会向父进程发送一个SIGCHLD信号,告诉父进程我快结束,赶快调用wait函数,来回收子进程的退出状态和其他信息。
这就是一种我们通常来预发僵尸进程产出的方法,在父进程接收到SIGCHLD信号后,将默认行为改为wait来回收子进程的信息。如果父进程没有调用wait函数,子进程先于父进程退出,则子进程将成为僵尸进程。
但是wait函数需要阻塞父进程直到子进程结束为止,对于并发要求较高的并发服务器,可能就不是很适用。
这里就引出第二种解决僵尸进程的方法,将僵尸进程交给init进程来领养,回收子进程退出状态和其他信息。当我们忽略SIGCHLD信号,内核将把僵尸进程交由init进程去处理,能够省去大量僵尸进程占用系统资源。
即调用:
signal(SIGCHLD, SIG_IGN)
思考???
wait函数在内核里究竟干了什么??
回收子进程的退出状况???
其他信息是什么???
本文标签: linux信号函数signal(SIGCHLD SIG
版权声明:本文标题:linux信号函数signal(SIGCHLD, SIG 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687390499h97196.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论