シグナルハンドラー関数のaddsignal()関数について読んだところ、デフォルトの動作が上書きされる可能性があります。
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void signalHandler();
int main(void) {
signal(SIGUSR1, signalHandler);
sleep(60);
printf("I wake up");
return 0;
}
void signalHandler() {
signal(SIGUSR1, signalHandler);// I add this line to overwrite the default behaviour
printf("I received the signal");
}
そして、私は別のプロセスでそれをトリガーします
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
kill(5061, SIGUSR1); // 5061 is the receiver pid, kill(argv[1], SIGUSR1) doesn't working, when I get 5061 as parameter
puts("send the signal ");
return 0;
}
wake up
受信機は、信号を受信するとすぐに処理しSIGUSR1
ます。sleep
他のプロセスからの信号を受信した場合でも、受信機を継続させるにはどうすればよいですか?
ところで、 5061をパラメーターとして取得したときにkill(5061, SIGUSR1);
、5061がレシーバーpidであるのに、kill(argv[1], SIGUSR1)
機能しないのはなぜですか?