孤儿进程

孤儿进程和僵尸进程_父进程
孤儿进程和僵尸进程_父进程_02
ps -ajx可以查看进程的父进程

僵尸进程

孤儿进程和僵尸进程_僵尸进程_03
孤儿进程和僵尸进程_父进程_04
也就是子进程死亡父进程不管,不回收子进程,它就会变成僵尸进程,此时不能用kill杀死僵尸进程,这种情况只能杀死父进程,然后自己进程被init进程领养被释放

wait回收子进程

孤儿进程和僵尸进程_父进程_05
孤儿进程和僵尸进程_僵尸进程_06
成功的话返回子进程进程id
孤儿进程和僵尸进程_父进程_07
通过下面的宏函数可以获取状态:
孤儿进程和僵尸进程_僵尸进程_08
孤儿进程和僵尸进程_父进程_09
孤儿进程和僵尸进程_子进程_10
测试,使用kill杀死:
孤儿进程和僵尸进程_僵尸进程_11
孤儿进程和僵尸进程_僵尸进程_12

waitpid

参数可以设置非阻塞
孤儿进程和僵尸进程_僵尸进程_13
孤儿进程和僵尸进程_子进程_14
孤儿进程和僵尸进程_父进程_15
这里面有一个问题,如下图:
孤儿进程和僵尸进程_子进程_16
孤儿进程和僵尸进程_子进程_17
传参0和-1的区别:-1是任意的子进程,0是同一组的,分离出来的不能回收,一般父pid就是组pid
< -1:回收组pid里面的进程可以用组pid取反
孤儿进程和僵尸进程_父进程_18
改进方法:
孤儿进程和僵尸进程_僵尸进程_19
孤儿进程和僵尸进程_子进程_20

waitpid回收多个子进程

孤儿进程和僵尸进程_僵尸进程_21
注意返回0的意思是,使用非阻塞的方式,且子进程正在运行

主要是给自己看的,所以肯定会出现很多错误哈哈哈哈哈