0

システムTWICE内の他のすべてのプロセスにシグナルSIGCHLDを送信するプログラムがあります。問題は、一度しか送信されないことです。

シグナルを送信するプログラム:

 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();
}

最初の信号だけで、2番目の信号を取得しないのはなぜですか? ...ヘルプ??

4

0 に答える 0