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