如果我们使用sigaction来定义信号处理程序,那么为什么我们不需要重置处理程序?如果我们使用signal(sig_no,handler_func)
那么我们必须重置它。为什么是这样?sigaction - 为什么我们不需要重置处理程序?
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
void func(int sig)
{
printf("caught signal:%d\n",sig);
// Not needed to reset handler. Why?
}
int main()
{
struct sigaction sa;
sa.sa_handler=(void*)func;
sigaction(SIGRTMIN,&sa,NULL);
kill(0,SIGRTMIN);
kill(0,SIGRTMIN);
kill(0,SIGRTMIN);
}
Output:
[[email protected] signals]# ./a.out
caught signal:34
caught signal:34
caught signal:34 (3 times signal caught by same handler without resetting handler)
谢谢,非常好,信息丰富。 – kingsmasher1 2011-03-13 17:36:22