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 ; }

最新文章

  1. 【阿里云产品公测】云引擎ACE新手实战基于Wordpress
  2. zabbix监控zookeeper
  3. Struts2 学习笔记 10 Result部分 part1
  4. stackoverflow收藏
  5. 超级密码(bfs)
  6. ice使用过程遇到的问题
  7. 设计模式二 适配器模式 adapter
  8. Transformer
  9. 【转载】ASP.NET生成图片的缩略图
  10. WPF 绕圈进度条(一)
  11. mysql5.7设置简单密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  12. JAVA高级篇(二、JVM内存模型、内存管理之第二篇)
  13. CF724F Uniformly Branched Trees
  14. 多进程共享数据,真正的通信Manager
  15. FFmpeg软硬解和多线程解码
  16. SQL Server数据类型转换方法
  17. javascript 跳出(终止)forEach循环
  18. svn can&#39;t save server certificate
  19. nowcoder模拟赛
  20. 阿里云ECS的使用

热门文章

  1. 服务器端Session和客户端Session
  2. 五一出门必备的手机APP神器 让你瞬间大开眼界
  3. Dynamics 365-关于Solution的那些事(一)
  4. arcgis api 3.x for js 入门开发系列十四最近设施点路径分析(附源码下载)
  5. 长图的展开与收起(Android)
  6. 微信分享大图遇到的问题(Android)
  7. Android常用的四种布局(或者说是五种)
  8. Android 注解框架对比
  9. Python使用Plotly绘图工具,绘制甘特图
  10. rocketmq有序消息