"Alarm clock" 消息 linux
"Alarm clock" message on linux
我正在做一个用 C 编写的项目,我正在使用警报。在代码的开头,我使用 sigaction() 来初始化警报:
struct sigaction sa;
sa.sa_handler = alarm_handler;
sigaction(SIGALRM, &sa, NULL);
然后我在循环中使用 alarm() 函数调用闹钟:
while(){
alarm(mySeconds);
}
程序发送第一个警报并运行处理程序函数,但是当他发送第二个警报时,输出流中会出现一条消息:
"Alarm clock"
我不知道为什么会这样。谢谢。
你让 struct sigaction
的大部分变量未初始化,你需要做
struct sigaction sa;
memset(&sa, 0, sizeof sa);
sa.sa_handler = alarm_handler;
另请注意,如果您在任何当前警报到期之前再次调用 alarm(),警报文档会说什么:“在任何情况下,任何先前设置的 alarm() 都会被取消。”。所以像在你的循环中一样每秒调用它数百万次可能不是一个好主意,你不断地重置闹钟。
我正在做一个用 C 编写的项目,我正在使用警报。在代码的开头,我使用 sigaction() 来初始化警报:
struct sigaction sa;
sa.sa_handler = alarm_handler;
sigaction(SIGALRM, &sa, NULL);
然后我在循环中使用 alarm() 函数调用闹钟:
while(){
alarm(mySeconds);
}
程序发送第一个警报并运行处理程序函数,但是当他发送第二个警报时,输出流中会出现一条消息:
"Alarm clock"
我不知道为什么会这样。谢谢。
你让 struct sigaction
的大部分变量未初始化,你需要做
struct sigaction sa;
memset(&sa, 0, sizeof sa);
sa.sa_handler = alarm_handler;
另请注意,如果您在任何当前警报到期之前再次调用 alarm(),警报文档会说什么:“在任何情况下,任何先前设置的 alarm() 都会被取消。”。所以像在你的循环中一样每秒调用它数百万次可能不是一个好主意,你不断地重置闹钟。