#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t sigset(int sig, sighandler_t disp);
#ifdef __USE_UNIX98 # define SIG_HOLD ((__sighandler_t) 2) /* Add signal to hold mask. */ #endif |
#define __USE_UNIX98 |
#include <stdio.h>
#include <unistd.h>
#include "unix98.h"
#include <signal.h>
static volatile sig_atomic_t sig;
static void sigusr(int sig_num);
int main(void)
{
if (sigset(SIGUSR1, SIG_HOLD) == SIG_ERR)
printf("Can't catch SIGUSR1");
if (sigset(SIGUSR2, sigusr) == SIG_ERR)
printf("Can't catch SIGUSR2");
for(;;) {
pause();
if (sig == SIGUSR1)
printf("Received SIGUSR1\n");
else
printf("Received SIGUSR2\n");
}
}
static void sigusr (int sig_num)
{
if ((sig_num == SIGUSR1) || (sig_num == SIGUSR2))
sig = sig_num;
else
printf("Received signal %d", sig_num);
}
beyes@linux-beyes:~/C/signal> kill -USR1 9358
beyes@linux-beyes:~/C/signal> kill -USR2 9358
beyes@linux-beyes:~/C/signal> kill -USR2 9358
beyes@linux-beyes:~/C/signal> ./sigset2.exe
Received SIGUSR2
AReceived SIGUSR2
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |