处理Linux/UNIX系统中的信号
UNIX/Linux 系统提供了特殊的机制来在每个单独的进程之间进行通信。其中一种机制是信号,属于进程之间的不同通信方法(进程间通信,缩写为IPC)。
简而言之,信号是发送到程序(或进程)的软件中断,用于通知程序重要事件或对程序的请求,以便运行特殊的代码序列。接收到信号的程序要么停止执行,要么继续执行其指令,要么在有或没有内存转储的情况下终止,要么干脆忽略信号。
虽然它在 POSIX 标准中定义,但反应实际上取决于开发人员如何编写脚本并实现信号的处理。
在本文中,我们将解释什么是信号,展示如何从命令行向另一个进程发送信号以及处理接收到的信号。在其他模块中,程序代码主要基于信号模块。该模块将操作系统的相应 C 头文件与 Python 世界连接起来。
1、信号介绍
在基于Linux/UNIX的系统上,有三类信号:
系统信号(硬件和系统错误):SIGILL、SIGTRAP、SIGBUS、SIGFPE、SIGKILL、SIGSEGV、SIGXCPU、SIGXFSZ、SIGIO
设备信号:SIGHUP、SIGINT、SIGPIPE、SIGALRM、SIGCHLD、SIGCONT、SIGSTOP、SIGTTIN、SIGTTOU、SIGURG、SIGWINCH、SIGIO
用户定义信号:SIGQUIT、SIGABRT、SIGUSR1、SIGUSR2、SIGTERM
每个信号都由一个整数值表示,可用的信号列表相对较长,并且在不同的 UN