1
Quelqu'un peut-il me dire pourquoi le gestionnaire de signal de programme1 ne fonctionne pas?Signaux 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
S'il vous plaît aidez-moi à résoudre Program1
Cependant, le program2 fonctionne, si j'utiliser un simple gestionnaire de signaux comme comme d'habitude:
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, ce lien dit que ce n'est pas un syndicat? – kingsmasher1
@Maxim: Bien que cela fonctionne quand je commente "sa.sa_sigaction = NULL" – kingsmasher1
Du lien: *** "Sur certaines architectures une union est impliquée: ne pas assigner à sa_handler et sa_sigaction." *** –