0
我创建了一个程序,其中一个信号调用会安装一个新的信号处理程序'signum',并且在按下终端特殊字符时基本显示消息,例如CRTL-C。跟踪调用了多少个信号?
我想知道如果我想跟踪CRTL-C被按下多少次,该怎么办?我该如何去实施呢?谢谢。如果你想在其他地方可用的计数
void f(int signum) {
static int cnt = 0;
printf('Hahah, you clicked me %d time(s)!', ++cnt);
}
,然后使用一个全局变量来代替:
#include <stdio.h>
#include <signal.h>
main() {
void f(int);
int i;
int count = 0;
signal(SIGINT, f);
for (i = 0; i < 5; i++) {
printf("...I am waiting for you...\n");
sleep(1);
}
void f(int signum) {
printf("Haha, you clicked me!\n");
}
在信号处理程序中调用'printf'是不安全的 - 如果信号在另一个I/O调用(例如主循环中的'printf')中传递,它可能会崩溃或以其他方式行为不端。 –