您的位置:首页 > 产品设计 > UI/UE

APUE 信号学习笔记

2007-10-29 22:52 330 查看

#include <sys/types.h>


#incude <signal.h>


#include <unistd.h>




typedef void Sigfunc(int);


Sigfunc *signal(int, Sigfunc*);




int kill(jpid_t pid, int signo);


int raise(int signo);


unsigned int alarm(unsigned int seconds);//unistd.h


int pause();//unistd.h



每个进程都有一个信号屏蔽字,它规定了当前要阻塞递送到该进程的信号集。对于每种可能的信号,该屏蔽字都有一位与之对应。对于某种信号,若其对应位已设置,则它当前是阻塞的。进程可以调用sigprocmask来检测和更改其当前信号屏蔽字。信号数可能会超过一个整型数所包含的二进制位数,因此出现了数据类型sigset_t,它保持一个信号集。

kill函数将信号发送给进程或进程组。raise函数则允许进程向自身发送信号。

POSIX.1将信号编号0定义为空信号。如果signo参数是0,则kill仍执行正常的错误检查,但不发送信号。这常用来确定一个特定进程是否仍旧存在。如果想一个并不存在的进程发送空信号,则kill返回-1,errno则被设置为ESRCH。

使用alarm函数可以设置一个时间值。当设置的时间超过时,产生SIGALARM信号。如果不忽略或不捕捉此信号,则默认动作是终止该进程。每个进程只能有一个闹钟时间

pause是在信号处理函数处理完毕后才返回。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: