Linux信号
2023-12-15 16:55:56
SIGINT信号简单使用
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
void sig_handler()
{
exit(0);
}
int main()
{
signal(SIGINT,sig_handler);
while(1)
{
printf("hello\n");
sleep(1);
}
return 0;
}
程序运行时,按下ctrl + c,结束进程。
signal()函数传参
void timer_handler(int msg)
{
switch(msg) {
case SIGALRM:
printf("to do someting when set timer is comming\n");
break;
default:
break;
}
return;
}
signal(SIGALRM, timer_handler);
msg参数是什么?
msg是一个整数参数,表示接收到的信号的类型。在信号处理函数中,这个参数用来识别哪个信号触发了该函数。在您的函数中,msg会被检查是否等于SIGALRM。
如何通过signal函数传入?
当您使用signal(SIGALRM, timer_handler);这行代码时,您实际上是在告诉操作系统:“当SIGALRM信号发生时,请调用timer_handler函数。”
当SIGALRM信号发生时,操作系统会自动调用timer_handler函数,并将SIGALRM作为参数msg传递给该函数。
如何使用?
在timer_handler函数中,您可以根据接收到的信号类型(通过msg参数确定)来执行相应的操作。在您的代码中,如果接收到的是SIGALRM信号(msg等于SIGALRM),则执行打印一条消息的操作。
如果您的程序可能会接收到多种类型的信号,并且您想对它们分别做出响应,您可以在switch语句中添加更多的case分支,每个分支处理不同的信号类型。
文章来源:https://blog.csdn.net/qq_42853675/article/details/134982512
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!