代码改变世界

linux fork两次避免僵尸进程的程序(简单)

2015-09-23 11:20  夏洛克·福尔摩斯  阅读(424)  评论(0编辑  收藏  举报
#include<stdio.h>
#include<unistd.h>

int main()
{
    pid_t pid,pid1;
    int status;

    if( (pid = fork())<0)
    {
        printf("fork error\n");
        return -1;
    }
    else if( pid == 0)
    {
        printf("%d,%d\n",getpid(),getppid());
        if( (pid1 = fork())<0)
        {
            printf("fork error\n");
            return -1;
        }
        else if(pid1 == 0)
        {
            printf("%d,%d\n",getpid(),getppid());
            system("ps -ef|grep dlsc30");
            return 0;
        }
        exit(0);
    }
    wait(&status);
    printf("%d,%d\n",getpid(),getppid());
    while(1)
    {
        printf("i will not break\n");
        sleep(5);
    }
    exit(0);
}