如何查找昆明公司的网站,php网站开发遇到的问题,网页游戏开服表就找新壹玩,免费网站推广网站破解版进程退出
关于进程退出有两个函数
exit和 _exit#xff1a;其主要差别是在于是否直接退出。 其流程主要区别如下#xff1a;
孤儿进程#xff08;不存在危害#xff09;
父进程运行结束#xff0c;但子进程还在运行#xff08;未运行结束#xff09;#xff0c;这…进程退出
关于进程退出有两个函数
exit和 _exit其主要差别是在于是否直接退出。 其流程主要区别如下
孤儿进程不存在危害
父进程运行结束但子进程还在运行未运行结束这样的子进程就称为孤儿进程。每当出现一个孤儿进程的时候内核就把孤儿进程的父进程设置为 init 而 init 进程会循环地 wait()它的已经退出的子进程。这样当一个孤儿进程凄凉地结束了其生命周期的时候init 进程就会代表党和政府出面处理它的一切善后工作。
僵尸进程有危害
每个进程结束之后, 都会释放自己地址空间中的用户区数据。但是子进程的内核区的 PCB 没有办法自己释放掉需要父进程去释放。子进程终止时父进程因为种种原因无法回收子进程残留资源PCB存放于内核中变成僵尸Zombie进程。僵尸进程不能被 kill -9 杀死这样就会导致一个问题如果父进程不调用 wait() 或 waitpid()的话那么保留的那段信息就不会释放其进程号就会一直被占用但是系统所能使用的进程号是有限的如果大量的产生僵尸进程将因为没有可用的进程号而导致系统不能产生新的进程此即为僵尸进程的危害应当避免。
解决方法 通过wait() 和 waitpid() 函数。这两个函数功能一样区别在于wait() 函数会阻塞 waitpid() 可以设置不阻塞waitpid() 还可以指定等待哪个子进程结束。
注意一次wait或waitpid调用只能清理一个子进程清理多个子进程应使用循环。