Python信号相关概念及运用
Python信号相关概念及运用
[TOC]
介绍
信号是软件中断。信号提供了一种处理异步事件的方法。
不存在编号为0的信号。kill函数对信号编号0有特殊的应用。POSIX.1将此信号编号值称为空信号。
很多条件可以产生信号:
- 当用户按某些按键时,引发终端产生的信号。(DELETE,Ctrl+C,Ctrl+,Ctrl+Z)。这些键可以自定义。
- 硬件异常产生信号:除数为0、无效的内存引用等。
- 进程调用kill(2)函数可将信号发送到另一个进程或进程组。有限制:只能发送给同一用户的进程,或者发送信号的进程所有者是超级用户。
- 用户可用kill(1)命令将信号发送给其他进程。
- 当检测到某种软件条件发生,并应将其通知有关进程时也产生信号。例句SIGURG、SIGPIPE、SIGALRM。
信号是异步事件的经典实例。产生信号的事件对进程而言是随机出现的。
可以要求内核在某个信号出现时按照下列方式之一进行处理:
- 忽略此信号。大多数都可以,但有两个不能忽略,他们是SIGKILL和SIGSTOP。原因是:它们向超级用户提供了使进程终止或停止的可靠方法。
另外,有些如果忽略由硬件异常引发的异常(如除0),则进程的行为是未定义的。 - 捕捉信号。自定义信号处理函数。注意:不能捕捉SIGKILL和SIGSTOP信号。
- 执行系统默认动作。针对大多数信号的系统默认动作是终止进程。