#include <stdio.h>
#include <unistd.h>
#include <signal.h>
static void sig_usr(int signo);
int main(int argc, char **argv) {
if(signal(SIGUSR1,sig_usr) == SIG_ERR)
printf("signal error");
if(signal(SIGUSR2,sig_usr) == SIG_ERR)
printf("signal error");
for(;;) {
pause();
}
}
static void sig_usr(int signo) {
if(signo == SIGUSR1) {
printf("recived sigusr1");
}
if(signo == SIGUSR2) {
printf("recived sigusr2");
}
printf("recived %d",signo);
}
|
#include <signal.h>
int kill(pid_t pid,int signo);
int raise(int signo);
|
#include <unistd.h>
unsigned int alarm(unsigned int seconds);
参数seconds的值是秒数,经过了指定的seconds秒后产生信号SIGALRM。
|
#incude <unistd.h>
int pause(void);
|
#include <signal.h>
int sigemptyset(sigset_t *set); //初始化由set指向的信号集,清除其中所有信号
int sigfillset(sigset_t *set); //初始化由set指向的信号集,使其包括所有信号
int sigaddset(sigset_t *set,int signo);
int sigdelset(sigset_t *set,int signo);
|
#include <signal.h>
int sigprocmask(int how,const sigset_t *restrict set,siset_t #restrict oset);
|
#include <signal.h>
int sigpending(sigset_t *set);
|
#include <signal.h>
int sigaction(int signum, const struct sigaction *act,
struct sigaction *oldact);
|
#include <setjmp.h>
int sigsetjmp(sigjmp_buf env, int savesigs);
void siglongjmp(sigjmp_buf env, int val);
|