sigaction 的使用
2024-09-11 16:20:58
linux内核会发射一些信号,应用程序可以捕捉信号执行特定函数
int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 成功:;失败:-,设置errno
act:传入参数,新的处理方式。oldact:传出参数,旧的处理方式。
struct sigaction结构体 struct sigaction { void(*sa_handler)(int);
sigset_t sa_mask; int sa_flags;
};
① sa_handler:指定信号捕捉后的处理函数名(即注册函数)。也可赋值为SIG_IGN表忽略 或 SIG_DFL表执行默认动作
② sa_mask: 调用信号回调函数时,所要屏蔽的信号集合(信号屏蔽字)。注意:仅在处理函数被调用期间屏蔽生效,是临时性设置。用sigaddset函数添加需要被捕捉的信号。
③ sa_flags:通常设置为0,表使用默认属性:为0的时候,可以屏蔽正在处理的信号(若在处理2号信号时又有2号信号,则此时传来的2号信号会被屏蔽)。
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
void func(int signal)
{
printf("%d号信号被捕捉。\n", signal);
} int main(void)
{ struct sigaction act, oldact; act.sa_handler = func; act.sa_flags = ; sigemptyset(&act.sa_mask);//sa_mask是一个临时信号集,将其清零(初始化I) sigaddset(&act.sa_mask, SIGQUIT);//将3号信号添加到信号集,即:3号信号就是我们在处理2号信号的时候需要屏蔽的那个信号,也可以添加其他信号,比如20号信号 sigaddset(&act.sa_mask, SIGTSTP); int s_ret = sigaction(SIGINT, &act, &oldact); if (>s_ret)
{
perror("sigaction error"); exit();
} while (); return ; }
最新文章
- 【阿里云产品公测】云引擎ACE新手实战基于Wordpress
- zabbix监控zookeeper
- Struts2 学习笔记 10 Result部分 part1
- stackoverflow收藏
- 超级密码(bfs)
- ice使用过程遇到的问题
- 设计模式二 适配器模式 adapter
- Transformer
- 【转载】ASP.NET生成图片的缩略图
- WPF 绕圈进度条(一)
- mysql5.7设置简单密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- JAVA高级篇(二、JVM内存模型、内存管理之第二篇)
- CF724F Uniformly Branched Trees
- 多进程共享数据,真正的通信Manager
- FFmpeg软硬解和多线程解码
- SQL Server数据类型转换方法
- javascript 跳出(终止)forEach循环
- svn can&#39;t save server certificate
- nowcoder模拟赛
- 阿里云ECS的使用