博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Linux编程-进程回收

Posted on 2023-03-17 09:54  乔55  阅读(21)  评论(0编辑  收藏  举报

孤儿进程

1. // 父进程死了,子进程还活着,子进程叫孤儿进程
2. // 孤儿被干爹init进程领养,init进程变成了孤儿进程的父进程
3. // 为什么需要父进程?因为释放子进程占用的资源需要父进程
  -. 进程结束之后,能够释放用户区空间
  -. 释放不了pcb(在内核空间),必须由父进程释放,故需要init进程成为孤儿进程的父进程

僵尸进程

1. // 进程死了,父进程还活着,父进程不去释放子进程的pcb,孩子就变成了僵尸进程
2. // 僵尸进程是一个已经死掉的进程

wait函数

pid_t wait(int *status);

waitpid函数

pid_t waitpid(pid_t pid, int *status, int options);
1. // 参数
  1. // 参数pid
  - pid==-1:等待任一子进程,与wait等效
  - pid==0:等待其组ID等于调用进程的组ID的任一子进程
  - pid>0:等待进程ID为pid的子进程
  - pid<-1:等待其组ID等于的pid的绝对值的任一子进程
  2. // 参数options
  - 设置为WNOHANG,函数非阻塞;
  - 设置为0,函数阻塞
2. // 返回值
  - >0:返回清理掉的进程ID
  - -1:无子进程
  - 0:参数3为WNOHANG,且子进程正在运行