- 论坛徽章:
- 0
|
#include <unistd.h>;
#include <signal.h>;
static void sig_quit(int); /*signal handler*/
int
main()
{
sigset_t newset,oldset,pendmask;
if(signal(SIGQUIT,sig_quit)==SIG_ERR){
printf("can't catch SIGQUIT"
exit(0);
}
sigemptyset(&newset);
sigaddset(&newset,SIGQUIT);
if(sigprocmask(SIG_BLOCK,&newset,&oldset)<0){
printf("sigprocmask error"
exit(0);
}/*signal SIGQUIT be blocked*/
sleep(5);
printf("slept for 5 minutes"
/*you can test whether blocked or not at this time*/
if(sigpending(&pendmask)<0){
printf("sigpending error"
exit(0);
}
if(sigismember(&pendmask,SIGQUIT))
printf("signal SIGQUIT is pending\n"
else
exit(0);
if(sigprocmask(SIG_SETMASK,&oldset,NULL)<0){
printf("sigprocmask error,can't reset the mask set"
exit(0);
} /*oldset is restored*/
sleep(5);
exit(0);
}
static void
sig_quit(int signo)
{
printf("caught SIGQUIT"
if(signal(SIGQUIT,SIG_DFL)==SIG_ERR){
printf("signal error"
exit(0);
}
return;
}
请大家在gcc编译一下的结果,这个程序是<<unix环境高级编程>;>;里的10-11程序
我基本上是照抄的,但是结果却.........
ctrl-\的意思是??是同时按ctrl key 与\ key吗??
郁闷等待................................................................ |
|