僵尸进程

什么是僵尸进程,僵尸进程其实是进程的一种状态,即僵尸态。在3.1.3节中,介绍了僵尸态进程的形成。进程的僵尸态与死亡态很接近。唯一不同的是死亡态进程,即进程退出,释放所有资源;而僵尸态进程,即进程退出,但其资源没有得到释放。因此在实际的编程过程中,应尽量关注这一点,避免产生僵尸态的进程,因为僵尸态进程不执行任何任务,但却占有系统资源。如果僵尸态进程太多,则会导致系统浪费。下面将通过一个示例,展示僵尸态进程的产生。

 1 #include <stdio.h>
  2 #include <unistd.h>
  3 #include <sys/types.h>
  4 
  5 int main(int argc, const char *argv[])
  6 {
  7     pid_t pid;
  8 
  9     pid = fork();
 10 
 11     if(pid < 0){
 12         perror("fork error");
 13         return -1;
 14     }
 15     else if(pid == 0){
 16         /*child*/
 17         printf("The child process, id = %d parent id = %d\n", 
 18                 getpid(), getppid());
 19     }
 20     else{
 21         /*parent*/
 22         printf("The parent process, id = %d\n", getpid());
 23         while(1);
 24     }
 25     return 0;
 26 }        

如上述代码所展示的,如果父进程不退出,子进程退出,此时父进程不会主动回收子进程的资源,子进程成为僵尸进程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值