7
votes

C Déclaration de la bibliothèque de signaux standard

alors quelqu'un peut-il expliquer ce que cela est censé faire: xxx

Il s'agit d'une définition extraite de la bibliothèque de signaux standard.


0 commentaires

4 Réponses :


6
votes

La fonction signal prend comme arguments: xxx

et retourne: xxx

signal enregistre une fonction à appeler lorsque le signal se produit et renvoie le gestionnaire de fonctions précédent.


0 commentaires

0
votes

La page de l'homme rend cette déclaration plus facile à comprendre en introduisant un Typedef comme: xxx

sighandler_t est défini comme un pointeur à une fonction qui accepte un int et renvoie void .

signal est une fonction qui accepte un int < / code> (numéro de signal) et un pointeur de fonction et renvoie un pointeur de fonction.


0 commentaires

1
votes

Fondamentalement, il permet de décider comment gérer un signal spécifique (identifié par argument int sig ) envoyé à votre programme.

Le vide vide (* FUNC) (int) est un pointeur sur la fonction qui gérera le signal (vous pouvez fournir une ou utilisez un code personnalisé ou d'utiliser sig_dfl Sig_ign qui sont des actions par défaut pour le gérer normalement ou l'ignorer).

La fonction signal renvoie ensuite le pointeur sur le gestionnaire présent avant l'appel de cette fonction ou sig_err est une erreur survenue. Ceci peut être utilisé pour restaurer le gestionnaire par défaut ces derniers temps lorsque vous avez effectué un comportement personnalisé.


0 commentaires

7
votes

Démarrer avec le nom: xxx pré>

aller à droite aussi loin que possible: p> xxx pré>

Vous avez une liste de paramètres parenthèses, C'est donc une fonction prenant 2 paramètres: un int code> nommé sig code> et un pointeur de fonction nommé func code> (vous pouvez l'analyser de la même manière plus tard) . P>

Puis vous frappez un autre droitparen, vous allez donc à gauche: p> xxx pré>

donc la fonction le signal code> renvoie un pointeur à. .. quelque chose. Retirons la parenthèse et allons à nouveau à nouveau, car nous pouvons: P>

void (*signal(int sig, void (*func)(int)) ) (int)


0 commentaires