Linux13 僵死进程

<defunct>僵死进程:

        PCB存在,进程主体释放,子进程结束,父进程未获取子进程的退出码,从而子进程不得不保存退出码,所以整个PCB也就无法释放。子进程结束会向父进程发送一个SIGCHLD信号。

       孤儿进程:孤儿进程会被init接管。

僵死进程处理办法:

  1. 父进程获取子进程的退出码:pid_t wait(int* reval);pid_t waitpid();这种方式可能导致父进程在wait或waitpid调用出现阻塞运行,直到子进程退出。(阻塞运行:所需条件未准备好,函数不会返回,直到条件满足,从而造成执行阻塞。非阻塞运行:函数调用,无论条件是否满足,函数都返回。)
  2. 父进程调用signal用于修改信号处理方式,signal(SIGCHLD,SIG_IGN),来忽略SIGCHLD信号,这样子进程结束后会由内核释放资源。
  3. 对子进程的退出捕获他们的退出信号SIGCHLD,父进程几首退出信号时,在信号处理函数中调用wait或者waitpid操作来释放他们的资源。(异步处理)signal(SIGCHLD,fun);

异步执行:两个以上的进程或者线程,执行互不影响,同时向下执行,当某个时刻,一个进程或线程会通过系统机制通知其他进程或线程。

同步执行:一个进程或者线程的执行需要通过依赖其他的进程或者线程的执行条件。两个进程之间的运行关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值