本文介绍: Linux系统中,信号是一种通信的方式,其通常用作用户,系统或进程给目标进程发送的信息。信号的作用:通知目标进程某个状态的改变或系统异常。对于终端程序:可以是用户输入的特殊的终端字符,比如ctrl+c是中断信号系统异常,如浮点异常或非法内存访问系统状态变化用户运行kill命令或程序调用kill函数程序必须处理(忽略可以算作处理的一种)一些常见信号。

Linux系统中,信号是一种通信的方式,其通常用作用户,系统或进程给目标进程发送的信息。

信号的作用:通知目标进程某个状态的改变或系统异常。

产生的条件:

  1. 对于终端程序:可以是用户输入的特殊的终端字符,比如ctrl+c是中断信号
  2. 系统异常,如浮点异常或非法内存访问
  3. 系统状态变化
  4. 用户运行kill命令或程序调用kill函数

程序必须处理(忽略可以算作处理的一种)一些常见信号

进程给其他进程发送信号使用kill函数

  • 作用:发送信号
  • 参数
    • pid:目标进程的id
    • sig:发送的信号
  • 返回值:
    • 成功:0
    • 失败:-1

  • 作用:为信号设置处理函数
  • 参数
    • signum:信号的编号
    • handler:函数指针,表示接收此信号要执行的函数的地址
      • SIG_IGN:忽略这个信号
      • SIG_DFL:按照默认动作执行这个信号
      • 如果是一个函数,则受到信号时去执行这个函数
  • 返回值
    • 成功:函数指针,类型是sighandler_t
    • 失败:SIG_ERR
  • 作用:为信号设置处理函数,或者获取信号的处理函数,或二者皆有可用来检查和更改信号处理操作,可以支持可靠、实时信号的处理,并且支持信号传递信息
  • 参数:
    • sig:信号的编号
    • act:信号动作结构体,见下

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注