美文网首页
第八章-异常控制流(2)

第八章-异常控制流(2)

作者: CSU_IceLee | 来源:发表于2018-12-30 18:40 被阅读6次

    信号

    一个信号就是一条小消息,通知进程系统中发生了一个某种类型的事件。

    通常异常都是由内核异常处理程序进行处理的,正常情况下,对用户进程是不可见的。信号提供了一种机制,通知用户进程发生了这些异常。

    传送一个信号到目的进程的步骤:

    image.png image.png
    image.png
    1. 进程组:
      每个进程都属于一个进程组。通常父进程和子进程属于同一个进程组。
      可以通过函数改变某个进程的进程组。
    2. 发送信号
    • /bin/kill
      可以发送任意信号,其中杀死进程的信号是 /bin/kill -9 pid
      杀死进程组: /bin/kill -9 -15231(进程组PID)
    • 键盘发送信号
      Ctrl+C会发送SIGINT到前台进程组中的每个进程,默认情况下会终止前台作业。
      Ctrl+Z会发送SIGTSTP到前台进程组中的每个进程,默认会挂起前台作业。
    • kill函数发送信号
      可以给其他进程发送信号
    • alarm函数发送信号
      给自己发送SIGALRM信号。
    1. 接受信号
      当内核把进程p从内核模式切换到用户模式,会检查进程p的未被阻塞的待处理信号的集合,如果集合为空,那么内核将控制传递到p的逻辑控制流中的下一条指令。然而,如果是非空的,那么会将集合中的某个信号k强制让p接收。
    2. 阻塞和解除阻塞信号
      隐式阻塞:内核默认阻塞当前程序正在处理信号类型的待处理的信号。
      显示阻塞机制:通过函数明确地阻塞和解除阻塞选定的信号。

    相关文章

      网友评论

          本文标题:第八章-异常控制流(2)

          本文链接:https://www.haomeiwen.com/subject/xnavlqtx.html