在linux下父进程和子进程的概念是什么?如何理解?如何显示?
2013-01-05 16:07
811 查看
当一个子进程结束运行(一般是调用exit、运行时发生致命错误或收到终止信号所导致)
时,子进程的退出状态(返回值)会回报给操作系统,系统则以SIGCHLD信号将子进程被结束
的事件告知父进程,此时子进程的进程控制块(PCB)仍驻留在内存中。一般来说,收到
SIGCHLD后,父进程会使用wait系统调用以取得子进程的退出状态,然后内核就可以从内存中
释放已结束的子进程的PCB;而如若父进程没有这么做的话,子进程的PCB就会一直驻留在内
存中,也即成为僵尸进程。 孤儿进程则是指父进程结束后仍在运行的子进程。在类UNIX
系统中,孤儿进程一般会被init进程所“收养”,成为init的子进程。 为避免产生僵尸
进程,实际应用中一般采取的方式是: 1.将父进程中对SIGCHLD信号的处理函数设为
SIG_IGN(忽略信号); 2.fork两次并杀死一级子进程,令二级子进程成为孤儿进程而
被init所“收养”、清理。
时,子进程的退出状态(返回值)会回报给操作系统,系统则以SIGCHLD信号将子进程被结束
的事件告知父进程,此时子进程的进程控制块(PCB)仍驻留在内存中。一般来说,收到
SIGCHLD后,父进程会使用wait系统调用以取得子进程的退出状态,然后内核就可以从内存中
释放已结束的子进程的PCB;而如若父进程没有这么做的话,子进程的PCB就会一直驻留在内
存中,也即成为僵尸进程。 孤儿进程则是指父进程结束后仍在运行的子进程。在类UNIX
系统中,孤儿进程一般会被init进程所“收养”,成为init的子进程。 为避免产生僵尸
进程,实际应用中一般采取的方式是: 1.将父进程中对SIGCHLD信号的处理函数设为
SIG_IGN(忽略信号); 2.fork两次并杀死一级子进程,令二级子进程成为孤儿进程而
被init所“收养”、清理。
相关文章推荐
- 《王保明老师----Linux开发学习笔记》------讲12:守护进程 -----如何分析和理解下面这个创建守护进程的实例
- linux中父进程退出时如何通知子进程
- Linux进程理解与实践(一)基本概念和编程概述(fork,vfork,cow)
- linux中父进程退出时如何通知子进程
- 读深入理解Linux内核 (第9章 进程地址空间, 第一部分 ---- 概念)
- Linux进程理解与实践(一)基本概念和编程概述(fork,vfork,cow)
- 理解Linux中进程,线程等概念
- 进程的概念?如何显示进程?
- 我该如何理解进程与页之间是什么关系???
- linux网络协议是什么?该如何去理解?
- 【Linux】如何创建daemon进程&fork一次和fork两次有什么区别
- 如何linux下监控进程及其子进程占用资源?
- 如何理解编译期和运行期的概念?它们分别干了什么
- 如何理解Linux下的动态库概念,和静态库概念,通俗易懂的解释如下:
- 如何更直观理解进程、线程、事务的概念
- Linux 父进程如何获取子进程返回值?parent get child process return value,fork,wait,wait_pid
- 进程的基本概念以及如何创建子进程
- linux如何查进程、杀进程
- Linux进程理解与实践(四)wait函数处理僵尸进程
- Linux有问必答:Linux上如何查看某个进程的线程