Chapter 10__信号


SIGHUP解说,有关终端和进程:
http://blog.csdn.net/cugxueyu/archive/2008/01/16/2046565.aspx
http://blog.csdn.net/fjb2080/archive/2010/01/11/5174306.aspx

关于sigaction函数和结构体
http://it.chinawin.net/os/article-1b626.html

http://hi.baidu.com/linxhchina/blog/item/da709202a06ae30f4afb5122.html
http://hi.baidu.com/linxhchina/blog/item/2ec4fbf84c8a160fd8f9fd23.html

★信号
信号的名字:以"SIG"开头;
信号的都被定义为正整数;
信号定义在头文件里,不同系统有所不同。(Linux <bits/signum.h>)
信号是异步事件的经典实例。

★信号产生的条件:
1、按终端按键:如Ctrl+C产生中断信号;
2、硬件异常产生:除数为0,无效的内在引用,通常由硬件检测,然后通知内核;
3、进程调用kill(2)函数
4、用户调用kill(1)命令
5、软件条件。

★信号的处理方式:
1、默认处理。(终止+core文件)
2、忽略信号。(Kill、Stop不能忽略、不能捕捉)
3、捕捉信号。信号发生时,调用用户指定的函数;


★信号相关的函数
void (*signal(int signo, void (*func)(int))) (int);
即:
typedef void sigfunc(int);
sigfunc *signal(int, sigfunc *);

signal是由ISO C定义的,ISO C不涉及多进程、进程级以及终端I/O等,定义非常含糊。
而且语义与实现有关,建议使用sigaction函数替代signal函数。

func的值可以是常量SIG_IGN、SIG_DFL和函数地址。
SIG_IGN:忽略此信号。
SIG_DFL:系统默认动作。

10.5中断的系统调用、自动重启动
10.6可重入函数,中断后重新执行。
10.7 SIGCLD与SIGCHLD
10.8可靠信号术语和主义
10.9 kill和raise函数
 ·kill将信号发送给进程或进程组;
 ·raise允许进程向自身发送信号;
10.10 alarm和pause函数
 ·alarm可以设置一个计时器,超时时,产生Alrm信号,该信号默认会终止调用的进程。
   alarm和历史有关,P253
 ·pause挂起调用的进程,直到捕捉到一个信号。
  alarm + pause = sleep的功能

10.11 信号集,表示多个信号的数据类型。
10.12 sigprocmask函数
10.13 sigpending函数
10.14 sigaction函数,替代signal函数
10.15 sigsetjmp和siglongjmp函数
10.16 sigsuspend函数
10.17 abort函数,使进程终止。
10.18 system函数
10.19 sleep
10.20 作业控制信号

你可能感兴趣的:(C++,c,linux,C#)