|
楼主 |
发表于 2007-7-23 19:26:03
|
显示全部楼层
谢谢你的解答
- #include <stdio.h>
- #include <unistd.h>
- #include <signal.h>
- #include <stdlib.h>
- //#include <>
- static void sig_quit(int signo)
- {
- printf("caught SIGQUIT\n");
- signal(SIGQUIT, SIG_DFL);
- }
- int main()
- {
- sigset_t newmask;
- sigset_t oldmask;
- sigset_t pendmask;
- signal(SIGQUIT, sig_quit);
- sigemptyset(&newmask);
- sigaddset(&newmask, SIGQUIT);
- sigprocmask(SIG_BLOCK, &newmask, &oldmask);
- sleep (5);
- sigpending(&pendmask);
- // sleep (5);
- if (sigismember(&pendmask, SIGQUIT))
- {
- printf("\nSIGQUIT pending\n");
- }
- sigprocmask(SIG_SETMASK, &oldmask, NULL);
- printf("SIGQUIT unblocked\n");
- sleep(5);
- return (0);
- }
复制代码
APUE的例子,sigprocmask 暂时不接受了用sigaddset()添加到newmask里的SIGQUIT信号,可
是,里面的oldmask又是做什么用的呢?希望能解答一下~
还有就是:
- if (sigismember(&pendmask, SIGQUIT))
复制代码
里面的pendmask 什么时候被加进了SIGQUIT信号呢? |
|