Chinaunix首页 | 论坛 | 博客
  • 博客访问: 324386
  • 博文数量: 106
  • 博客积分: 3081
  • 博客等级: 中校
  • 技术积分: 1090
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-15 14:07
文章分类

全部博文(106)

文章存档

2009年(1)

2007年(34)

2006年(71)

我的朋友

分类: C/C++

2006-03-15 16:24:54

 

/*

1. wait function 是完全阻塞,而waitpid function可以通过设置第三个参束option来设置为非阻塞式 .

2. waitpid 可以指定等待某一个子进程,wait则等待任何一个子进程




*/


#include
#include
#include
#include
#include

void show_status(int status)
{
    if(WIFEXITED(status))
    printf("normal termination,exit status is %d\n",WEXITSTATUS(status));

    if(WIFSIGNALED(status))
    printf("terminated by abnormal signal,signal number is %d %s\n",
    WTERMSIG(status),WCOREDUMP(status) ? "(core file generated)":"");

    if(WIFSTOPPED(status))
    printf("child process stopped,signal number is %d\n",WSTOPSIG(status));



}

int main(void)
{
    pid_t pid;
    int status,i;
    if((pid=fork())<0){
        printf("fork failed");
        exit(1);

    }

    else if (pid==0)
    exit(0);
    if(wait(&status)!=pid){
    printf("wait failed");
    exit(1);
    }

    show_status(status);

    if((pid=fork())<0){printf("fork failed");exit(1);}

    else if(pid==0)
    abort();

    if(wait(&status)!=pid){
        printf("wait failed");
        exit(1);
    }

    show_status(status);

    if((pid=fork())<0){
        printf("fork failed");
        exit(1);
    }

    else if(pid==0)

    i/=0;     /*睇睇...就悟系正常结束子进程*/

    if(wait(&status)!=pid){
        printf("wait failed");
        exit(1);
    }

    show_status(status);
    exit(0);





}
阅读(788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~