【linux系统编程学习笔记】第四节:进程通信方式之异步信号(signal、sigprocmask、kill)

本文主要介绍了Linux系统编程中的进程通信方式——异步信号,包括非实时和实时信号的特性、默认行为,重点讲解了信号的API如`signal`、`sigprocmask`和`kill`的使用,以及信号的安全机制和处理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

U Need To Know When You Close Your Eyes

你需要知道什么时候闭上眼睛

进程通信方式之异步信号

系统当中的信号分类

非实时信号

实时信号

信号的知识点

信号的相关API

sighandler_t signal(int signum, sighandler_t handler);

int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);

信号集合操作函数:

int kill( pid_t pid, int sig );

信号的安全机制

在阻塞时被挂起的信号是有优先级的


系统当中的信号分类

非实时信号

概念:

  • 1-31的信号值的信号 

特点:

  1. 每一个非实时信号一般都对应着一个默认执行动作(缺省动作)
  2. 每一个非实时信号都有自己的名字
  3. 每一个非实时信号都有自己触发的系统事件
  4. 信号可以被嵌套执行
  5. 信号丢失(非实时信号的记录信号的方式是用一个标志位记录的)

实时信号

概念:

  • 34-64的信号值的信号 

特点:

  1. 每个信号都没有自己默认的执行动作
  2. 每一个实时信号不一定有自己的名字
  3. 信号可以被嵌套执行
  4. 信号不会丢失(实时信号记录信号是用一个计数变量来记录的)

系统当中有两个信号是就算设置了也会按照缺省动作执行动作:

  1. SIGKILL:杀死进程
  2. SIGSTOP:暂停进程

 

信号的知识点

信号们:

           名称            值       默认行为      备注

           SIGHUP       1         Term         当关闭控制终端(登陆窗口)时触发该信号

           SIGINT         2         Term         按下 ctrl + c 时触发该信号

           SIGQUIT       3       Core          按下 ctrl + \ 时触发该信号

           SIGILL          4       Core           遇到CPU无法执行的非法指令时触发该信号

           SIGABRT      6       Core           当调用函数 abort() 时触发该信号

           SIGFPE         8       Core           当发生除零操作时触发该信号

           SIGKILL        9        Term           系统安全的保障,因为它只能被默认处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值