Valeur de retour [Résolu]

Messages postés
43
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
26 février 2014
- - Dernière réponse : StayCrunchy
Messages postés
43
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
26 février 2014
- 17 juil. 2011 à 17:19
Bonjour,
j'ai un programme A et un autre B. J'aimerai appeler B depuis A et si cela est possible récupérer la valeur de retour de B une fois ce dernier exécuté. Pour appeler le programme on m'a déjà guidé vers execl(); mais je ne parviens pas à récupérer la valeur censé être retournée par B.
Merci.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
45
Date d'inscription
mardi 20 mars 2007
Statut
Membre
Dernière intervention
28 juillet 2011
3
Merci
Salut, sous Linux (ou sous Cygwin sous Windows) on peut faire comme suit :

Code du programme A :
#include
#include <sys/types.h>
#include <errno.h>
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>

int main() {
pid_t cPID; //PID du processus fils.
int status; //Valeur de retour du fils.

//Création d'un processus fils.
cPID = fork();
if(cPID >= 0) { //Succès.
if(cPID == 0) { //On est dans le processus fils.
execl("./B", "B", (char*)0);
} else { //On est dans le processus père.
wait(&status); //On récupère la valeur de retour du processus fils.
printf("%d\n", WEXITSTATUS(status));
exit(0); //On termine.
}
} else { //Echec.
exit(0);
}
}



Code du programme B
#include <stdio.h>

int main() {
return 42;
}




A l'exécution, le programme A va donc afficher 42 qui est la valeur de retour du programme B.
Je me suis inspiré de l'exemple suivant : http://www.amparo.net/ce155/fork-ex.html

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Commenter la réponse de macsou01
Messages postés
43
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
26 février 2014
0
Merci
merci beaucoup, je test tout ca ce soir ;)
Commenter la réponse de StayCrunchy