我有程序将信号 SIGCHLD 发送到系统 TWICE 中的所有其他进程。问题是,它只发送一次。
发送信号的程序:
int main(){
kill(-1, SIGCHLD);
sleep(8);
kill(-1, SIGCHLD);
return 0;}
程序获取信号:
int main(){
struct sigaction sigchldHandler;
sigchldHandler.sa_flags = 0;
sigset_t BlockMask;
sigfillset(&BlockMask);
sigchldHandler.sa_mask = BlockMask;
sigchldHandler.sa_handler = sigchldFunction;
if( sigaction( SIGCHLD, &sigchldHandler, NULL ) != 0 ){
perror( "sigaction() error\n" );}
while(1){
pause()}
return 0;
}
功能是:
void sigchldFunction(int signal){
write(1, "gets here only once\n", strlen("gets here only once\n"));
startHandling();
}
为什么它没有得到第二个信号,只有第一个?...帮助??