我读到了信号处理函数中的 add signal() 函数可以覆盖默认行为:
#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
即使接收到来自其他进程的信号,如何让接收器继续?
顺便说一句,为什么 kill(5061, SIGUSR1);
5061 是接收器 pid kill(argv[1], SIGUSR1)
,当我将 5061 作为参数时不起作用?