#include <stdio.h>
#include <signal.h>
int main()
{
sigset_t sig_set;
sigemptyset(&sig_set);
sigaddset(&sig_set,SIGALRM);
if( sigismember(&sig_set,SIGALRM)==1 )
printf(
"SIGALRM has been set\n");
else
printf(
"SIGALRM not been set\n");
signal(SIGALRM,sigusr1_handler);
if(sigprocmask(SIG_BLOCK,&sig_set,
NULL)==-1)
printf(
"fail to set mask\n");
else
printf(
"set mask ok\n");
raise(SIGALRM);
alarm(5);
while(1)
{
printf(
"on\n"); sleep(1); } return 0; }
这个程序因为对SIGALRM信号进行了屏蔽,因此并无Alarm Clock出来终止进程,但是,这个信号仍是存在的,叫作未决信号,一旦把这个屏蔽去掉,这个信号立马就蹦出来了,不过同类的信号只能有一个未决信号,其它忽略