wait()函数,自杀函数abort(),WIFEXITED WIFSIGNALED

来源:互联网 发布:淘宝静物相机 编辑:程序博客网 时间:2024/06/05 10:01
#include<stdio.h>#include<stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/wait.h>//wait 1.阻塞等待子进程结束,当任意一个子进程结束或者该进程接收到一个信号,立即返回。//2.当前进程回收子进程的8kb物理资源,防止子进程变僵尸进程。//自杀函数abort()//WIFEXITED  WIFSIGNALEDint main(void){    printf("main process pid = %d\n",getpid());    int status;    pid_t pid;    pid = fork();//创建子进程    if(pid < 0)    {        perror("fork error");        exit(1);//结束进程    }    if(pid == 0)    {        printf("子进程pid = %d\n",getpid());        sleep(1);        //abort(); //自杀函数        exit(2);    }    if(pid > 0)    {        printf("父进程pid = %d\n",getpid());        //阻塞等待任意子进程,回收子进程8kb物理内存        wait(&status);        //判断子进程结束状态        if(WIFEXITED(status))//进程正常结束        {            printf("normal exit status = %d\n",WIFEXITED(status));        }        if(WIFSIGNALED(status))//进程异常终止        {            printf("recv signal exit\n");        }        printf("-------------\n");        exit(1);    }    return 0;}//没有abort(); //自杀函数/*$ ./a.outmain process pid = 24896父进程pid = 24896子进程pid = 24897normal exit status = 1-------------*///有abort(); //自杀函数/*$ ./a.outmain process pid = 24929父进程pid = 24929子进程pid = 24930recv signal exit-------------*/
原创粉丝点击