Chinaunix首页 | 论坛 | 博客
  • 博客访问: 279516
  • 博文数量: 109
  • 博客积分: 2116
  • 博客等级: 大尉
  • 技术积分: 1062
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-22 15:38
文章分类

全部博文(109)

文章存档

2013年(2)

2011年(16)

2010年(90)

2009年(1)

我的朋友

分类: LINUX

2010-07-09 11:23:37

一个进程终止但是父进程尚未进行回收,就是僵死。

避免僵死可以调用waitpid等待子进程结束,但是其间父进程一直阻塞。

更好的办法是调用两次fork函数。

源代码如下:

#include

#include

#include

 

int main()

{

    pid_t pid;

    if((pid = fork()) < 0)//出错

    {

        perror("fork!\n");

    }

    else if(pid == 0)//子进程1

    {//子进程中创建进程2

        if((pid =fork()) < 0)//出错

        {

            perror("fork!\n");

        }

        else if(pid > 0)//进程1

        {

            exit(0);//退出

        }

        else//子进程2

        {

            sleep(2);

            printf("second child, parent pid = %d\n", getpid());

            exit(0);

        }

    }

    else//父进程

    {

        sleep(3);

        printf("parent!\n");

        exit(0);

    }

}

 

实验结果如下:

阅读(545) | 评论(0) | 转发(0) |
0

上一篇:阻塞与非阻塞

下一篇:守护进程实验

给主人留下些什么吧!~~