Valeur de retour

Résolu
StayCrunchy Messages postés 43 Date d'inscription mercredi 24 novembre 2010 Statut Membre Dernière intervention 26 février 2014 - 17 juil. 2011 à 11:39
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.

2 réponses

macsou01 Messages postés 45 Date d'inscription mardi 20 mars 2007 Statut Membre Dernière intervention 28 juillet 2011
17 juil. 2011 à 13:46
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
3
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
merci beaucoup, je test tout ca ce soir ;)
0
Rejoignez-nous