小威
...

  1.信号的三种响应方式 ; 忽略, 默认响应, 自定义

  2.信号相对于进程的控制流程来说是异步的。

  3.使用kill -l 查看系统定义的信号列表

      1-33 不支持排队  34-64支持排队

      例 ;  Ctrl-C产生SIGINT信号, Ctrl-\产生SIGQUIT信号, Ctrl-Z产生 SIGTSTP 信号(可使前台进程停止)

  4.SIGQUIT的默认处理动作是终止进程并且Core Dump

      ulimit -c 1024  : 允许core文件爱女最大为1024K

  5.kill命令是调用kill函数实现的。

  6.kill函数的作用 ; 可以给一个指定的进程发送指定的信号

   raise 函数 : 可以给当前进程发送指定的信号。

    函数原型 : #include <signal.h>

          int kill(pid_t pid, int signo);

          int raise(int signo);

    返回值 : 成功返回0,失败返回-1

      signo 为那几个数的几种情况 : 

                  0 : 杀死本组进程

                  -1 :杀死除init之外的所有进程

                  >= 1 : 杀死某个进程

                  -10 : 杀死组号为10的进程

  7. abort函数使当前进程接受到SIGABRT信号而异常终止

    函数原型: #include <stdlib.h>

          void abort(void);

    返回值 : 总是会成功,所以么有返回值

  8.alarm()函数和SIGALRM信号

      函数原型 : #include <unistd.h>

            unsigned int alarm(unsigned int seconds);

      调用alarm函数可以设定一个闹钟, 可以告诉内核在seconds 秒后给当前进程发SIGALRM 信号。该信号的默认处理动作是终止当前进程。

      如果seconds为0,表示取消以前设定的闹钟, 函数返回值仍然是以前设定的闹钟时间还余下的秒数

  9.信号递达 : 实际执行信号的处理的动作

   信号未决 : 信号从产生到递达之间的状态

  10 , 每个信号都有两个标志位分别表示阻塞和未决

  11. 信号集操作函数 : 

      sigset_t 类型对于每种信号用一个bit表示“有效”或“无效”状态

      函数原型 : #include <signal.h>

          int sigemptyset(sigset_t *set); 清零

          int sigfillset(sigset_t *set); 置1

          int sigaddset(siget_t *set, int signo);  某一位置1

          int sigdelset(sigset_t *set, int signo);  某一位清零

          int sigismemeber(const sigset_t *set, int signo);  判断某一位是否为1

  12. 调用 sigprocmask : 读取或更改进程屏蔽字

      函数原型 : #include <signal.h>

            int sigprocmask(int how, const sigset_t *set, sigset_t *oset);

      返回值 : 成功为 0, 失败为 -1

      若oset非空指针, 则读取进程的当前信号屏蔽信号通过oset参数传出

      若set非空指针, 则更改进程的信号屏蔽字。

      若两者都非空 , 先将原来的信号屏蔽备份到oset里, 然后根据set和how参数更改信号屏蔽字。

      how :

          SIG_BLOCK : set包含了我们希望添加到当前信号屏蔽字的信号

          SIG_UNBLOCK : set包含了从当前信号屏蔽字着中解除阻塞的信号。

          SIG_SETMASK : 设置当前信号屏蔽字位set所指向的值。

  13.函数原型 : #include <signal.h>

          int sigpending(sigset_t *set);

      sigpending读取当前进程的未决信号集, 通过set参数传出。

      成功返回0, 失败返回-1

  

posted on 2013-09-11 17:30  小威_  阅读(152)  评论(0编辑  收藏  举报