二 Linux进程间通信( 七 )

运行结果:

二 Linux进程间通信

文章插图
3)如果父进程不关心子进程时候结束,那么可以用signal(SIGCHLD,SIG_IGN)通知内核,自己对子进程的结束不感兴趣 , 父进程忽略此信号 , 那么子进程结束后 , 内核会回收,并不再给父进程发送信号 。
#include <stdio.h>#include <unistd.h>#include <signal.h>#include<sys/types.h>#include<sys/wait.h>int main(){pid_t pid;//忽略子进程退出信号的信号//那么子进程结束之后,内核会回收,并不再给父进程发送信号signal(SIGCHLD,SIG_IGN);//创建进程pid = fork();if(pid<0){perror("fork");exit(1);}else if(pid == 0){//子进程printf("我是子进程,pid id :%d.我正在退出\n",getpid());exit(0);}else if(pid>0){//父进程sleep(2);//保证子进程先运行printf("我是父亲,我正在退出\n");system("ps -ef|grep defunct");//查看有没有僵尸进程}return 0;}运行结果:
二 Linux进程间通信

文章插图

推荐阅读