Réponse acceptée !
Salut, sous Linux (ou sous Cygwin sous Windows) on peut faire comme suit :
Code du programme A :
#include <unistd.h>
#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
|