begin process at 2012 02 11 14:11:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Autre

 > 

Passage de parametres a une fonction


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Passage de parametres a une fonction

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

AsM0DeUz

Membre Club
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 Administrateur CodeS-SourceS
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

Membre Club
Tres clair  Merci


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


Répondre à ce message

Sujets en rapport avec ce message

Question sur Getch() et retour chariot [ par KutaJack ] Bonjour Je suis débutant en C++ et j'utilise getch() avec kbhit() suivit d'un switch pour pouvoir faire tel ou tel action en fonction de la touche ap cycle hamiltonien en c++ [ par crapette1 ] Bonjour, Pour un prjet je dois réaliser un petit programme en c++ qui me renvoie un cycle hamiltonien à partir d'un graphe complet. Le seul problèm GPIB USB [ par Gladior ] Bonjour, Je dois piloter une machine via gpib usb. J'ai ce programme : [CODE]#include #include #include using namespace std; #include "gpib/i Trouver les pixel de couleur noir [ par blastrame ] Bonsoir j'aurais beosin de votre aide car je bloques :( Je souhaiterais a mon code pouvoir compter le nombre de pixel de couleur noir de l'image en oc Problème : conversion from constant void to void (GPIB) [ par twintornado ] Bonjour dans le cadre d'un stage je dois piloter des appareil avec un programme en C via une interface GPIB : voici mon code source : #include #in Besoin d'aide en C++ [ par sevio14 ] Aider moi svp à le terminer ce programme,voici le programme: #include #include "Tuples.h" #include "Vecteur.h" #include "Vecteur3d.h" #include un menu avec des controles d'erreur de saisie [ par valveur ] Bonjour, Voila mon simple programme, le problème est sur la saisie du choix: Si je tape une lettre mon programme ne s'arrête pas. Est ce que mon excep Programmer pour les erreurs [ par kml404 ] bonjour [b]exp;[/b] par [u]Application console Win32[/u] j'ai fait supprimé ce mot "stdafx.h", nouveau ajouté "windows.h" apres, fait les augman Impossible d'obtenir l'adresse d'une function contenus dans une DLL [ par Nementon ] Bonjours, Voila le code simple d'une DLL et de son exécutable, compilé sous Visual 2008 et qui pour de sombres raisons plante lamentablement, lorsqu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,529 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales