推荐博客:信号详解
信号的基本额概念:
信号(signal)机制是Linux系统中最为古老的进程之间的通信机制。Linux信号也可以称为软中断,是在软件层次上对中断机制的一种模拟。
在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,
信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程发生了什么
1. 进程间的常用通信手段
1> 信号:通知,用来通知某个进程发生了一件事,以及参数传递
2> 信号是异步发生,也被称为软中断
2. 信号如何产生:
1> 某个进程发送给另外一个进程或者发送供给自己
2> 由内核产生,发送给某个进程
通过键盘输入命令 ctrl+c 【中断信号】kill 命令
内存访问异常
* grep -in aa i:忽略大小写,n:行号
* find / -name | xargs grep -in
3.通过kill认识一些命令
kill: kill 进程id, 发送信号给进程。
kill 能给进程发送多种信号。
ps -eo pid.ppid.tty,sid,comm| grep -E 进程名称
追踪进程:
sudo strace -e trace=signal -p 进程号
4.信号处理的相关动作
当某个信号出现时,我们可以按三种方式之一进行处理,我们称之为信号的处理函数,或者信号的相关动作。
1: 执行系统默认动作,绝大数的默认动作会杀死这个进程
2: 忽略这个信号(但不包括SIGKILL 和SIGSTOP)
3: 捕捉这个信号,写个处理函数,信号发送的时候,我就用处理函数来处理,(不把包括SIGKILL 和SIGSTOP)
(kill -9 进程ID 是一定能够把这个进程杀掉的。)