ここでは、スリープ中に親にSIGINT信号を送りたいと思います。私はプログラムの後に書くことでそれを試みました。このプログラムでは、親からのSIGINTのシグナルハンドラがまったく実行されていないのはなぜですか?ここ はコードです:子から親への信号の送信
#include<stdio.h>
#include<signal.h>
#include<unistd.h>
#include<stdlib.h>
void sig_usr(int signo){
if(signo == SIGINT)
printf("Signal caught!");
return;
}
int main(void){
pid_t pid, ppid;
ppid = getpid();
printf("ppid = %d\n", ppid);
if((pid = fork()) == 0){
printf("killing parent...\n");
kill(ppid, SIGINT);
printf("After killing parent...\n");
}
else{
sleep(5);
printf("%d %d ",ppid, pid);
if(signal(SIGINT,sig_usr) == SIG_ERR)
printf("Signal processed ");
}
return 0;
}
出力: 出力がこれだけ多くのコンテンツを印刷しています。私は親が全く実行されていないと思う。
はID0 @、ありがとう – Vijesh