针对signal函数实现的问题
#include <stdio.h>
#include <signal.h>
#include <sys/time.h>
#include <unistd.h>
void sig_handler(int signum)
{
printf("rec signal num = %d\n", signum);
return;
}
//SIGALRM
int main(int argc, const char *argv[])
{
if(singal(SIGALRM, sig_handler) == SIG_ERR)
{
printf("signal call is error!\n");
return -1;
}
alarm(5);
while(1);
return 0;
}
老师您好,针对课堂中的代码有几个疑问:
- 在
if
判断中,为什么返回值需要为-1,这与返回值0有什么区别?这么做有什么好处? while(1)
这个循环为什么不需要写在最前面,把前面调用signal
和alarm(5)
包在大括号里?
6
收起
正在回答 回答被采纳积分+1
1回答
大白老师
2023-12-23 23:25:36
1.这个返回值的定义,需要看signal函数的返回值的含义,你可以通过 man signal查看该函数返回值的含义。这个函数返回的是个指针,SIG_ERR代表函数返回失败。通过if语句对函数调用情况进行判断。
2. while循环要是写在前面,alarm函数就不会执行了。例如,下面的例子就会一直死循环卡着输出"hello",
下面的printf("world");不会致性。while(1){
printf("hello\h");}printf("world\n"):这里的alarm和signal函数,在后面的可能会讲解的。alarm(5)代表系统内核每过5s发送一次SIGALARM信号。signal函数是用来捕捉信号的。
物联网/嵌入式工程师
- 参与学习 394 人
- 提交作业 23318 份
- 解答问题 1185 个
行业热门,政策风口,人才缺口极大,现在入场时机正好! 上千人检验,数轮迭代的硬核知识体系,软硬件通吃 保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星