Linux进程的理解:
1. 父子进程的关系
独立的两个进程
互为父子关系
2. 问题:
2.1. 父进程先结束?
子进程就依托根进程init:孤儿进程
孤儿进程没有任何问题(没有任何危害)
2.2. 子进程先结束?
子进程会成为僵尸进程。
僵尸进程不占用内存、cpu.但在进程任务树上的节点
僵尸进程会造成一个进程名额的浪费,所要处理僵尸进程
3. 僵尸进程使用wait回收
wait函数:pid_t wait(int * status);
进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。
参数status用来保存被收集进程退出时的一些状态,它是一个指向int类型的指针。但如果我们对这个子进程是如何死掉的毫不在意,只想把这个僵尸进程消灭掉,(事实上绝大多数情况下,我们都会这样想),我们就可以设定这个参数为NULL。
僵尸进程回收例子:
#include<stdio.h>
#include<unistd.h>
#include<sys/wait.h>
int main()
{
if(fork()==0)
{
printf(“子进程:%d\n”,getpid());
sleep(5);
printf(“子进程退出\n”);