c - 一段时间后,alarm() 随机停止
问题描述
我使用一种老式的方式为 Linux 用户空间应用程序实现了一个计时器。
int main(){
//do some things
signal(SIGALRM, do_things);
alarm(1);
while(1) {
//other things
}
}
void do_things()
{
tic++;//global variable
printf("time: %d...", tic);
if (tic%30 == 0) {
printf("hha\n ");
do_calculation();
}
alarm(1);
}
它随机运行并停止打印任何内容,应用程序仍然存在,但我的计时器似乎消失了。我不知道我应该从哪里开始检查。任何建议表示赞赏。
编辑:做了一些谷歌搜索,信号处理程序不应该包含“业务逻辑”或进行库调用,如 printf。
信号处理程序应该做的就是设置一个标志以由非中断代码执行。
虽然我仍然不知道导致消息消失的真正原因..
解决方案
推荐阅读
- typescript - 如何使用 Typescript 3.2.2 进行命令行编译?
- java - 未知错误:DevToolsActivePort 文件不存在
- spark-structured-streaming - 如何使用 Java Spark 结构化流 API 合并两个数据帧,而不添加索引并加入它们?
- angular - 延迟加载模块内的子路由未激活
- python-3.x - pytest 安装 pytest-ordering 模块后出错
- html - 如何使用引导程序在 div 标签中居中元素
- mysql - 不能包含mysql.h C语言Xcode
- html - 在盒子中间的css中制作箭头
- python - 将列表的字符串元素转换为变量
- slack - 无法使用 >>> 在 Windows 的 slack 应用程序上引用我的消息