2011-06-09 5 views
0

J'étudie le traitement du signal et j'ai une question sur le retour du signal:() type de retour

void (*sighandler_t)(int); 

Je sais qu'il est un pointeur vers la fonction précédente du gestionnaire de signaux, mais je ne Je ne sais pas ce que le paramètre "(int)" signifie.

Merci beaucoup!

+0

En aparté, notez que 'sighandler_t' n'est pas un nom de type standard et ne doit jamais être utilisé dans le code. C'est dangereux parce que vous ne pouvez pas compter dessus, mais vous ne pouvez pas le définir vous-même, car les en-têtes du système peuvent le définir. A la place, écrivez toujours le type complet ou définissez votre propre nom comme 'my_sighandler'. –

Répondre

4

Le paramètre int d'un gestionnaire de signal est le numéro du signal qui a provoqué l'appel de ce gestionnaire. Ceci est utile si vous avez plus d'un signal connecté à la même fonction de gestionnaire de signal.

1

Une fonction de gestionnaire de signal a la signature que vous avez affichée. Lorsque votre programme reçoit un signal, le système appelle votre gestionnaire de signal et lui envoie le signal à traiter en tant que paramètre, ce qui vous permet d'avoir un gestionnaire commun pour plusieurs types de signaux, par exemple.

2

(int) fait partie du type; le type sighandler_t est un pointeur vers une fonction qui renvoie void et prend un int en tant que paramètre.

0

Ce n'est pas exactement un pointeur vers la fonction précédente. C'est une déclaration d'un type de pointeur de fonction.

Ce pointeur fonctionnera pour n'importe quelle fonction avec un type de retour vide et un paramètre int.

en savoir plus sur la façon dont cette syntaxe fonctionne ici

http://www.cprogramming.com/tutorial/function-pointers.html