SIGCHLD信号没有屏蔽,为什么??
建树 2009-08-28 05:30:59 #include<stdio.h>
#include<sys/types.h>
#include<signal.h>
void *sigMyFuc()
{
printf("signal is send\n");
return;
}
int main(int argc,char*argv[])
{
pid_t pid;
char buf[20];
struct sigaction Sig;
sigemptyset(&Sig.sa_mask);
sigaddset(&Sig.sa_mask,SIGCHLD);
Sig.sa_flags=0;
Sig.sa_handler=sigMyFuc;
sigaction(SIGCHLD,&Sig,&Sig);
pid=fork();
if(pid<0)
{
printf("fork error\n");
return -1;
}
else if(pid==0)
{
sprintf(buf,"%d\n",pid);
}
else
{
waitpid(pid,NULL,0);
sprintf(buf,"%d\n",pid);
}
exit(0);
}
在上面的程序中我在sigaction函数中屏蔽了SIGCHLD信号,但当子进程退出时,父进程还是相应了,这是为什么???
还有就是sa_flags=0;代表的是什么意思??