#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void sigusr(int signo)
{
if(signo == SIGUSR1)
{
printf("received sigusr1\n");
}
else if(signo == SIGUSR2)
{
printf("received sigusr2\n");
}
else
{
printf("other signal\n");
}
}
int main()
{
if(signal(SIGUSR1,sigusr) == SIG_ERR)
{
printf("error sigusr1\n");
}
if(signal(SIGUSR2,sigusr) == SIG_ERR)
{
printf("error sigusr2\n");
}
for(;;)
{
sleep(1);
printf("sleep 1\n");
}
return 0;
}
所谓可重入函数:就是我们在信号处理函数中调用它是安全的。。。。。。
可重入函数:在信号处理程序中保证调用安全的函数,这些函数是可重入的并被称为异步信号安全。
有一些大家周知的函数都是不可重入的,如malloc() printf()
sigusr 中调用 printf 就是不安全的。。。。这里只是演示