关于init进程说法正确的是 在Linux中,用fork函数产生一个新的子进程,子进程结束后,子进程就成为了僵尸进程?
在Linux中,用fork函数产生一个新的子进程,子进程结束后,子进程就成为了僵尸进程?
避免僵尸进程1。父进程通过wait和waitpid函数等待子进程结束,这将导致父进程挂起。如果父进程繁忙,可以为SIGCHLD安装带有signal函数的handler,因为父进程将在子进程完成后接收信号,并且可以在handler中调用wait recovery。三。如果父进程不关心子进程何时结束,它可以使用signal(sigcld,SIG)通知内核它对子进程的结束不感兴趣。子进程结束后,内核将循环使用,不再向父进程发送信号。4还有一些技巧,就是fork两次,父进程fork子进程,然后继续工作,子进程fork子进程,然后退出,子进程由init接管,子进程结束后init会循环使用。不过,孩子回收的过程要自己做。
怎样来清除僵尸进程呢?
1. 重写父进程,并在子进程死后为其收集尸体。具体方法是接收sigchld信号。子进程结束后,它将向父进程发送sigchld信号。父进程收到信号后,将执行waitpid()函数为子进程收集尸体。这是基于这样的原理:即使父进程不调用wait,内核也会向它发送sigchld消息。虽然忽略了的默认处理,但如果要响应此消息,可以设置处理函数。终止父进程。父进程死亡后,zombie进程将成为“孤立进程”,并传递给1号进程init。Init将始终负责清理僵尸进程。它生成的所有僵尸进程都将消失。
关于init进程说法正确的是 linux init进程 init进程作用
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。