利用信号处理技术消灭僵尸进程

来源:互联网 发布:外汇模拟软件下载 编辑:程序博客网 时间:2024/05/16 14:57
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>#include <sys/wait.h>void read_childproc(int sig){int status;pid_t id=waitpid(-1,&status,WNOHANG);//调用waitpid()函数销毁子进程if(WIFEXITED(status)){printf("Removed proc id: %d \n",id);printf("Child send: %d \n",WEXITSTATUS(status));}}int main(){pid_t pid;struct sigaction act;act.sa_handler=read_childproc;sigemptyset(&act.sa_mask);act.sa_flags=0;sigaction(SIGCHLD,&act,0);//注册信号,当子进程终止时产生SIGCHILD信号pid=fork();if(pid==0)//子进程1{puts("Hi! I'm child one process");sleep(10);return 12;}else{printf("Child proc id: %d \n",pid);pid=fork();//子进程2if(pid==0){puts("Hi!I'm child two process");sleep(10);exit(24);}else{int i;printf("Child proc id: %d \n",pid);for(i=0;i<5;++i){puts("wait...");sleep(5);}}}return 0;}

原创粉丝点击