1
有人可以告诉我,为什么program1的信号处理程序不工作?UNIX/Linux信号
Program1: signal1.c
#include <stdio.h>
#include <signal.h>
void handler(int sig)
{
printf("Caught signal: %d",sig);
signal(sig,handler);
}
int main()
{
struct sigaction sa;
sa.sa_handler=handler;
sa.sa_sigaction=NULL;
sigaction(SIGRTMIN,&sa,NULL);
kill(0,SIGRTMIN);
}
Actual Output:
# ./a.out
Real-time signal 0
Expected Output:
Caught signal: 34
请帮我解决PROGRAM1
然而,程序2的作品,如果我使用像往常一样简单的信号处理程序:
enter code here
#include <stdio.h>
#include <signal.h>
void handler(int sig)
{
printf("Caught signal: %d\n",sig);
signal(sig,handler);
}
int main()
{
signal(SIGRTMIN, handler);
kill(0,SIGRTMIN);
}
Output:
Caught signal: 34
@Maxim:http://www.kernel.org/doc/man-pages/online/pages/man2/sigaction.2.html,这个链接说它不是工会? – kingsmasher1 2011-03-01 10:22:13
@Maxim:虽然它在我注释掉“sa.sa_sigaction = NULL”时起作用 – kingsmasher1 2011-03-01 10:23:14
来自链接:***“在一些体系结构上涉及到一个联合:不要同时分配sa_handler和sa_sigaction。”*** – 2011-03-01 10:24:14