Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Passage de parametres a une fonction [ Linux / Autre ] (AsM0DeUz)

jeudi 17 juillet 2008 à 14:35:44 | Passage de parametres a une fonction

AsM0DeUz

Bonjour,

Je suis en train de lire le document "Programmation avancée sous Linux" dans lequel j'ai trouvé le code ci-dessous dans le chapitre relatis aux signaux :

# include < signal.h >
# include < string.h >
# include < sys/types.h >
# include < sys/wait.h >
sig_atomic_t child_exit_status ;

void clean_up_child_process ( int signal_number )
{
   /* Nettoie le ou les processus fils . */
   int status ;
   while ( waitpid ( -1 , & status , WNOHANG ) ) ;
   /* Stocke la statut de sortie du dernier dans une variable globale .
   child_exit_status = status ;
}

int main ()
{
   /* Gère SIGCHLD en appelent clean_up_child_process. */
   struct sigaction sigchld_action ;
   memset (& sigchld_action , 0 , sizeof ( sigchld_action ) ) ;
  
sigchld_action.sa_handler = &clean_up_child_process;
   sigaction ( SIGCHLD , & sigchld_action , NULL ) ;
   /* Faire diverses choses , entre autres créer un processus fils . */
   /* ... */
   return 0;
}

A quel endroit se fait le passage de paramètre à la fonction qui doit recevoir un int ?

Merci

jeudi 17 juillet 2008 à 15:55:10 | Re : Passage de parametres a une fonction

rt15

Membre Club
Réponse acceptée !

Salut,

sigchld_action.sa_handler = &clean_up_child_process;

Ici, tu met en place l'adresse de clean_up_child_process dans une structure.
Comme l'indique le champ de cette structure, ta fonction est un handler (On parle aussi de callback).

Tu passe ensuite cette structure en argument de sigaction (ici, l'aide de sigaction et les pages de man).

La fonction clean_up_child_process va en fait être appelée non pas par ton propre code, mais par Linux.

Linux s'attend à ce que l'adresse que tu lui donne corresponde à l'adresse d'une fonction qui attend un entier en paramètre, et va passer ce paramètre en argument, de manière à ce que tu le récupère. Si tu met un argument supplémentaire à cleanup, ou que tu enlève le int,le programme a de bonne chances de planter à cause d'un décalage de pile.

clean_up_child_process va être appelé par Linux quand il souhaitera t'informer de l'arrivé d'un message SIGCHLD (Autrement dit, à la fin d'exécution d'un processus fils).

Je suis pas sûre d'avoir été très clair...


vendredi 18 juillet 2008 à 09:02:21 | Re : Passage de parametres a une fonction

AsM0DeUz

Tres clair  Merci



Cette discussion est classé dans : action, include, status, child, sigchld


Répondre à ce message

Sujets en rapport avec ce message

c koi les fichiers h? [ par etmerde ] je suis débutant(mais alors là, plus nul que ça tu trouves pas), et j'ai vu dans les codes c++ des trucs du genre include (machinchose.h) ou un truc d Dev-C++ #include <gl\gl.h> [ par How To ] #include #include #include ...je débute avec C++ et j'ai Dev-C++ 4.01 mais je n'ai pas les [g]library[/g] nécessaire pour un code source que j'ai tél Include camarchepas.c [ par Budykiller ] salut, je suis sous devC++ et je realise un programme de merde. il marchait jusqu'a ce que je le décompose en partie (niveau.c, chiffre.c et test.c) p Descriptif des fichiers INCLUDE [ par manu ] Bonjour, je cherche qqun qui puisse me lister la liste des fichier h d'include et a quoi ils servent ?Tel que :// Fichiers à inclure#include // pour prob. compilateur c++ [ par error ] salut a tous je debute dans la programmation en c++ j'ai po mal de livres mais dans mes livre il ya la fonction #include j'ai un prob mon compilateur Tableau de correspondance des fonctions c++ et de leur fichier #include [ par guguy ] BonjourJ'aimerais savoir s'il serait possible de trouver un tableau de correspondance entre les fonctions c++ et leur fichier #include (ex : cout -> i fprintf de factorielles ! [ par Xs ] voila, je comprend pas pourquoi le prog me met une erreur lors de l'execution alors que le compilateur et le linker n'ont rien vu d'anormal !#include Dans le genre prenant........ [ par Xs ] oui !c 'est trés chiant !j'explique mon pb : j'ai un code source, fais par moi-meme, et dedans, je veux que l'on saisisse des renseignement comme le l pour le generateur nfo ca marche mais pas la. [ par Xs ] bonjours !je suis en train de me faire un logicielpour gerer ma collection de CDs mais voila : lepricipal probleme est que dans les titres, y'a bien a C++ Standard ? [ par mmuller57 ] Voila, je viens d'aller sur le site de Bjarne Stroustrup et j'y ai pris un exemple de code source en C++ standard :#include#includeusing namespace std


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.