质量好网站建设公司,宿迁宿豫网站建设,百度排名软件,wordpress如何修改上传图片大小什么是signal(SIGCHLD, SIG_IGN)函数
在进行网络编程时候遇到这个函数的使用#xff0c;自己学习结果如下#xff0c;有不对请帮忙指正:)
signal(SIGCHLD, SIG_IGN)打开manpage康一康~
sighandler_t signal ( int signum, sighandler_t handler );参数1 int signum: 就是…什么是signal(SIGCHLD, SIG_IGN)函数
在进行网络编程时候遇到这个函数的使用自己学习结果如下有不对请帮忙指正:)
signal(SIGCHLD, SIG_IGN)打开manpage康一康~
sighandler_t signal ( int signum, sighandler_t handler );参数1 int signum: 就是信号的种类这里是通过信号回收子进程的SIGCHLD. 子进程要终止了发个SIGCHLD信号告诉父进程
参数2 sighandler_t handler 这里选的是SIG_IGN 忽视信号
这个函数总的意思就是 我父进程不关心你子进程啥时候要退出一会你退了以后内核把pcb那些该回收的那些回收了就行了包括子进程号、运行时间信息占用的内存mask等等别告诉我了嚎~ 这是一个异步的子进程结束后的料理后事的语句。
为啥要特意写这个函数交代子进程结束以后的“后事”呢 一切都要从“僵尸进程”这个词说起~
僵尸进程 子进程已经结束了不仅父进程没有通过wait/waitpid函数回收而且init也没回收。这种情况下这个子进程就变成了僵尸进程。
通俗来讲就是儿子嗝屁了爸爸没收视孤儿院也没收尸这个儿子就成了个没人管僵尸:(
这样的坏处就是这个僵尸子进程的一些东西包括processID运行时间退出状态退出原因等这些本来应该父进程来取时候释放掉的东西无人问津了会一直在占着内核而且processID也一直被僵尸子进程占用着这个ID号资源可是有限的啊那要是僵尸多了就没有processID号分给新要产生的程序了。
所以为了避免一会产生僵尸儿子父进程就说了我很忙的哦先干别的去了一会子进程结束了以后内核直接把残余信息销毁了就行了别跟我说了哈~
当然有的父进程说我没啥事情做我来回收可以采用阻塞就是一直等着直到子进程结束然后回收掉或者非阻塞方法回收通过调用wait/waitpid函数看看子进程结束了没结束了就赶紧回收掉要是需要的话也可以顺便收集进程的结束原因等信息。
wait函数和waitpid区别 waitpid可以根据pid指定回收哪个进程 wait是随机回收一个子进程。