用signal函数处理信号的小实例,两种注释,两种方法
信号集得函数还得慢慢写啊
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <wait.h>
/*void handler(int signum)
{
printf("===========\n");
wait(NULL);等待任何子进程
}*/
int main()
{
pid_t pid;
/*signal(SIGCHLD, handler);*/用函数处理子进程先退出的问题
pid = fork();
if(0 > pid)
{
perror("fork");
exit(-1);
}
else if( 0== pid)
{
printf("pid = %d %d\n", getpid(), pid );
raise(SIGABRT);//,子进程自己发送给自己进程结束,子进程先于父进程而亡
//成为僵尸进程
printf("child process exit ..... \n");
//sleep(1);//解决signal在子进程退出之前注册
exit(0);
}
else
{
//signal(SIGCHLD, SIG_IGN);//子进程中信号被忽略,以免引起僵尸进程
printf("pid = %d %d\n", getppid(), pid );
}
}