#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
#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是在信号处理函数处理完毕后才返回。