信息安全系统设计与实现第九周:《Unix/Linux系统编程》第六章学习笔记

信号和信号处理

信号和中断

  • 人员中断
  • 进程中断
  • 硬件中断
  • 进程的陷阱错误

Unix/Linux中的信号处理

31种不同信号,每种都在signal.h文件中有定义。

信号的来源

  • 来自硬件中断的信号
  • 来自异常的信号
  • 来自其他进程的信号

信号处理函数

每个进程PROC都有一个信号处理函数int sig[32]。sig[32]数组的每个条目都指定了如何处理相应的信号。

安装信号捕捉函数signal()->POSIX sigaction()

  • 在执行已安装的信号捕捉函数之前,通常将信号处理函数重置为DEFault。
  • signal()不能阻塞其他信号。
  • signal()只能向捕捉函数发送一个信号编号。
  • signal()可能不适用于多线程程序中的线程,sigaction()适用于线程。
  • 不同Unix版本的signal()可能会有所不同。

信号处理步骤

  • 当某进程处于内核模式时,会检查信号并处理未完成的信号;
  • 重置用户安装的信号捕捉函数:用户安装的陷阱相关信号捕捉函数用于处理用户代码中的陷阱错误;
  • 信号和唤醒:在Unix/Linux内核中有两种SLEEP进程(深度、浅度);

Linux中的IPC

IPC是指用于进程间通信的机制。

  • 管道和FIFO
  • 信号
  • System V IPC
  • POSIX消息队列
  • 线程同步机制
  • 套接字
上一篇:Unix/Linux系统编程第六章学习笔记


下一篇:Ch6 信号和信号处理