APUE读书笔记-第十章-信号

  1. 产生信号的五种方式
    • 用户按某些终端键
    • 硬件异常
    • 进程调用kill函数
    • 用户使用kill命令
    • 检测到某种软件条件已经发生
  2. 处理信号的三种方式
    • 忽略(SIGKILL,SIGSTOP不能被忽略)
    • 捕捉(SIGKILL,SIGSTOP不能被捕捉)
    • 执行系统默认动作
  3. 大多数Unix系统调试程序用core文件检查进程终止时的状态
  4. exec函数将原先设置为要捕捉的信号都更改为默认动作,其他信号的状态不变(一个进程原先要捕捉的信号,当其执行一个新程序后就不能再捕捉了,因为信号捕捉函数的地址很可能在所执行的新程序文件中已无意义)
  5. 在signal函数使用中,不改变信号的处理方式就不能确定信号的当前处理方式
  6. 子进程继承父进程的信号处理方式,因为子进程复制了父进程的内存映像,所以信号捕捉函数的地址在子进程中是有意义的
  7. 不可重入函数
    • 使用静态数据结构
    • 调用malloc或free
    • 是标准I/O函数,标准I/O库的很多实现都以不可重入的方式使用全局数据结构
  8. 在信号处理程序中调用可重入函数时,应在调用前保存errno,调用后恢复errno
  9. 除非支持POSIX.1实时扩展,否则大多数UNIX并不对信号排队,而是只递送该信号一次
  10. 在信号产生(generation)和递送(delivery)之间的时间间隔内,称信号是未决的(pending)
  11. 如果是非超级用户,基本规则是发送者的实际用户ID或有效用户ID必须等于接收者的实际用户ID或有效用户ID;特例:被发送的信号为SIGCONT,进程可将其发给属于同一会话的任一其他进程
  12. 12.

你可能感兴趣的:(APUE)