【发布时间】:2019-05-11 18:11:15
【问题描述】:
另一个正在运行的进程(我无法访问其代码)将以随机顺序向我的进程发送一堆 SIGUSR2 信号和两个 SIGUSR1 信号。我的程序的目的是计算在接收到第一个和第二个 SIGUSR1 信号之间它收到了多少次 SIGUSR2 信号。
(其他进程从我的进程收到SIGUSR1信号后开始发送)。
我是信号处理的初学者,所以如果它以某种方式涉及循环,它会让我更难。我已经看到使用信号操作无限循环是很常见的事情,但它让我如何正确实现它。
int counter=0;
void count_up(){
counter++;
}
void signal_catcher(){
signal(SIGUSR2,count_up);
// I think here should go some sort of loop that makes it keep catching SIGUSR2
// There should be some flag or somtehing too, so that it stops after receiving
// the second SIGUSR1
}
int main(int argc, char *argv[]){
int pid_sender = atoi(argv[1]);
kill(pid_sender,SIGUSR1); //The other process is notified to start
signal(SIGUSR1,signal_catcher); //The first SIGUSR1 is catched
}
【问题讨论】: