システム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番目の信号を取得しないのはなぜですか? ...ヘルプ??