用kill发送信号

用kill发送信号 - 图1

我们打开两个终端试试。在一个终端运行程序,在另一个终端用kill向程序发送信号:

用kill发送信号 - 图2

以上kill命令将向进程发送信号,然后运行进程中配置好的处理函数。但有一个例外,代码捕捉不到SIGKILL信号,也没法忽略它。也就是说,即使程序中有一个错误导致进程对任何信号都视而不见,还是能用kill –KILL结束进程。用kill发送信号 - 图3

用kill发送信号 - 图4

用raise()发送信号

有时你想让进程向自己发送信号,这时就可以用raise()函数。

  1. raise(SIGTERM);

通常会在自定义的信号处理函数中使用raise(),这样程序就能在接收到低级别的信号时引发更高级别的信号。

这叫信号升级