blob: 05bdbb014b2ce4f7287985c5c3dda70522be2a9c [file] [log] [blame]
sewardjed2b8b12002-06-20 08:17:07 +00001
2#include <stdio.h>
3#include <unistd.h>
4#include <pthread.h>
5#include <signal.h>
6#include <errno.h>
7#include <assert.h>
8
9int show ( void )
10{
11 int res, i, ret;
12 sigset_t pend;
13 res = sigpending(&pend);
14 printf("pending signals:\n");
15 assert(res == 0);
16 ret = 0;
17 for (i = 1; i < 64; i++) {
18 if (sigismember(&pend,i)) {
19 printf(" sig %d now pending\n", i);
20 ret = 1;
21 }
22 }
23 return ret;
24}
25
26void hdlr ( int sig )
27{
28 printf("signal %d arrived (unexpectedly!)\n", sig);
29}
30
31int main ( void )
32{
33 int res;
34 sigset_t set;
35 /* Force use of libpthread here */
36 pthread_testcancel();
37
38 printf("installing handler\n");
39 signal(SIGINT, hdlr);
40 /* and block it ... */
41 sigemptyset(&set);
42 sigaddset(&set, SIGINT);
43 res = pthread_sigmask(SIG_BLOCK, &set, NULL);
44 assert(res == 0);
45 printf("installing handler done; please do Control-C\n");
46
47 while (1) {
48 res = show();
49 if (res) break;
50 sleep(1);
51 }
52 printf("control-C now pending -- bye\n");
53
54 return 0;
55}