码迷,mamicode.com
首页 > 系统相关 > 详细

《Linux应用进程间通信(五) — 信号》

时间:2020-06-17 20:22:28      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:pes   定时   用户   中断   相关   交互   信号   常用   lrm   

1.信号的概念

  信号是UNIX和Linux系统响应某些条件而产生的一个事件,接收到该信号的进程会相应地采取一些行动。通常信号是由一个错误产生的。但它们还可以作为进程间通信或修改行为的一种方式,明确地由一个进程发送给另一个进程。一个信号的产生叫生成,接收到一个信号叫捕获。

  1)信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式

  2)信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。

  3)如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被 取消时才被传递给进程。

 

2.用户进程对信号的响应方式

  1)忽略信号:对信号不做任何处理,但是有两个信号不能忽略:即SIGKILL及SIGSTOP。

  2)捕捉信号:定义信号处理函数,当信号发生时,执行相应的处理函数。

  3)执行缺省操作:Linux对每种信号都规定了默认操作

 

3.信号都有哪些

kill  -l

  技术图片

主要常用的几个信号有:

SIGINT:ctrl+c 终止信号
SIGQUIT:ctrl+\ 终止信号
SIGTSTP:ctrl+z 暂停信号
SIGALRM:闹钟信号 收到此信号后定时结束,结束进程
SIGCHLD:子进程状态改变,父进程收到信号
SIGKILL:杀死信号

  

4.相关函数

4.1 kil函数

#include <sys/types.h>
#include <signal.h>

int kill(pid_t pid, int sig);

  

 

《Linux应用进程间通信(五) — 信号》

标签:pes   定时   用户   中断   相关   交互   信号   常用   lrm   

原文地址:https://www.cnblogs.com/zhuangquan/p/13154008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!