目录
进程间通信:IPC
IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等,其中Socket和Streams支持不同主机上的两个进程IPC。
四、Linux信号
对于Linux来说,实际信号是软中断,许多重要的程序都需要处理信号,信号为Linux提供了一种处理异步事件的方法,比如,终端用户输入了ctrl+c来中断程序,会通过信号机制停止一个程序
信号概述
信号的名字和编号:每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如SIGIO、SIGCHLD等等
查看信号:kill -l
信号的处理方法:忽略、捕捉、默认动作
忽略信号(SIG_IGN):大多数信号可以使用这个方式来处理,但是有两种信号不能被忽略(分别是SIGKILL和SIGSTOP)
捕捉信号:需要告诉内核,用户希望如何处理某一种信号,说白了就是写一个信号处理函数,然后把这个函数告诉内核
系统默认动作:对于每个信号来说,系统都对应由默认的处理动作,当发生了该信号,系统会自动执行。
杀死进程:
(1)查看进程号:ps -aux|grep a.out --------->a.out指正在运行的程序
(2)kill -9 进程号
(1)signal()函数___收信号
signal()函数功能:设置某个信号的捕捉行为
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
int signum: 表示要捕捉的信号
sighandler_t handler: 一个自定义的处理信号的函数,信号的编号为这个自定义函数的参数
参数handler表示信号的处理方式,有三种情况:
(1)SIG_IGN:忽略参数signum所指的信号。
(2)一个自定义的处理信号

本文深入探讨Linux进程间通信的信号机制,包括signal()用于接收信号,kill()用于发送信号,sigaction()更灵活地处理信号,以及sigqueue()发送带参数的实时信号。通过实例解析各个函数的使用,阐述信号在处理异步事件中的关键作用。
最低0.47元/天 解锁文章
623

被折叠的 条评论
为什么被折叠?



