1) signal
#include <signal.h>
typedef void (*sighandler_t)(int);
- 一个简单的信号绑定的例子,当向该程序发送-USER1或者-USER2信号时,调用信号处理函数sig_user
signal_demo.cpp
#include <signal.h>$
#include <stdio.h>$
#include <unistd.h>$
static void sig_usr(int); $
int main(void)$
{
if (signal(SIGUSR1, sig_usr) == SIG_ERR)$
printf("can’t catch SIGUSR1");
if (signal(SIGUSR2, sig_usr) == SIG_ERR)$
printf("can’t catch SIGUSR2");
for ( ; ; )$
pause();$
return 0;$
}
static void sig_usr(int signo) $
{
if (signo == SIGUSR1)$
printf("received SIGUSR1\n");$
else if (signo == SIGUSR2)$
printf("received SIGUSR2\n");$
else$
printf("received signal %d\n", signo);$
}
- 测试
- g++ signal_demo.cpp -o signal_demo
- ./signal_demo &
- kill -USER1 pid
- kill -USER2 pid