bonjour,
je voulais faire un simple fork, avec le fils executant un code externe ...
sous redhat j avais ecrit un petit code du style :
int pif = fork();
if (pid == 0) { // le fils
int ret execvp("le programme externe", 0);
// ici je regarde le code retour
}
...
Mon programme externe s'execute, va jusqu'a la fin, et mon code retour
est bon...
Les admin ont passes ma machine en centos4.0
maintenant, le programme externe s'execute toujours tres bien (j'ai
verifie qu'il s'execute jusqu'a la derniere ligne de code), par contre
le code retour est -1 (et errno = 10) !!!
Je peut supprimer le fork(), et remplacer tout par :
int ret = system("mon programme externe");
J'ai le meme probleme :(
quelqu'un aurait une idée sur un code retour qui me semblerait erroné ???
bonjour,
je voulais faire un simple fork, avec le fils executant un code externe ...
sous redhat j avais ecrit un petit code du style :
int pif = fork();
if (pid == 0) { // le fils
int ret execvp("le programme externe", 0);
// ici je regarde le code retour
}
...
Mon programme externe s'execute, va jusqu'a la fin, et mon code retour
est bon...
Les admin ont passes ma machine en centos4.0
maintenant, le programme externe s'execute toujours tres bien (j'ai
verifie qu'il s'execute jusqu'a la derniere ligne de code), par contre
le code retour est -1 (et errno = 10) !!!
Je peut supprimer le fork(), et remplacer tout par :
int ret = system("mon programme externe");
J'ai le meme probleme :(
quelqu'un aurait une idée sur un code retour qui me semblerait erroné ???
bonjour,
je voulais faire un simple fork, avec le fils executant un code externe ...
sous redhat j avais ecrit un petit code du style :
int pif = fork();
if (pid == 0) { // le fils
int ret execvp("le programme externe", 0);
// ici je regarde le code retour
}
...
Mon programme externe s'execute, va jusqu'a la fin, et mon code retour
est bon...
Les admin ont passes ma machine en centos4.0
maintenant, le programme externe s'execute toujours tres bien (j'ai
verifie qu'il s'execute jusqu'a la derniere ligne de code), par contre
le code retour est -1 (et errno = 10) !!!
Je peut supprimer le fork(), et remplacer tout par :
int ret = system("mon programme externe");
J'ai le meme probleme :(
quelqu'un aurait une idée sur un code retour qui me semblerait erroné ???
int pif = fork();
if (pid == 0) { // le fils
int ret execvp("le programme externe", 0);// ici je regarde le code retour
Non. Ici, tu peux regarder le résultat de execvp quand il n'arrive
pas à lancer le programme externe, mais s'il y arrive, il ne retourne
jamais.
Mon programme externe s'execute, va jusqu'a la fin, et mon code retour
est bon...
Non, jamais.
maintenant, le programme externe s'execute toujours tres bien (j'ai
verifie qu'il s'execute jusqu'a la derniere ligne de code), par contre
le code retour est -1 (et errno = 10) !!!
Je peut supprimer le fork(), et remplacer tout par :
int ret = system("mon programme externe");
J'ai le meme probleme :(
Non, avec system, tu as plein d'autres problèmes. Il vaut mieux
éviter system(3) en général.
Tu as une drôle de notion completement fantaisiste. Ça pourrait être
bien de lire quelque tutoriel ou livre sur la programmation unix...
En résumé, il faut distinger le résultat d'une fonction ou appel
système, du status retourné par un processus.
snip
int pif = fork();
if (pid == 0) { // le fils
int ret execvp("le programme externe", 0);
// ici je regarde le code retour
Non. Ici, tu peux regarder le résultat de execvp quand il n'arrive
pas à lancer le programme externe, mais s'il y arrive, il ne retourne
jamais.
Mon programme externe s'execute, va jusqu'a la fin, et mon code retour
est bon...
Non, jamais.
maintenant, le programme externe s'execute toujours tres bien (j'ai
verifie qu'il s'execute jusqu'a la derniere ligne de code), par contre
le code retour est -1 (et errno = 10) !!!
Je peut supprimer le fork(), et remplacer tout par :
int ret = system("mon programme externe");
J'ai le meme probleme :(
Non, avec system, tu as plein d'autres problèmes. Il vaut mieux
éviter system(3) en général.
Tu as une drôle de notion completement fantaisiste. Ça pourrait être
bien de lire quelque tutoriel ou livre sur la programmation unix...
En résumé, il faut distinger le résultat d'une fonction ou appel
système, du status retourné par un processus.
snip
int pif = fork();
if (pid == 0) { // le fils
int ret execvp("le programme externe", 0);// ici je regarde le code retour
Non. Ici, tu peux regarder le résultat de execvp quand il n'arrive
pas à lancer le programme externe, mais s'il y arrive, il ne retourne
jamais.
Mon programme externe s'execute, va jusqu'a la fin, et mon code retour
est bon...
Non, jamais.
maintenant, le programme externe s'execute toujours tres bien (j'ai
verifie qu'il s'execute jusqu'a la derniere ligne de code), par contre
le code retour est -1 (et errno = 10) !!!
Je peut supprimer le fork(), et remplacer tout par :
int ret = system("mon programme externe");
J'ai le meme probleme :(
Non, avec system, tu as plein d'autres problèmes. Il vaut mieux
éviter system(3) en général.
Tu as une drôle de notion completement fantaisiste. Ça pourrait être
bien de lire quelque tutoriel ou livre sur la programmation unix...
En résumé, il faut distinger le résultat d'une fonction ou appel
système, du status retourné par un processus.
snip
bonjour,
je voulais faire un simple fork, avec le fils executant un code externe ...
sous redhat j avais ecrit un petit code du style :
int pif = fork();
if (pid == 0) { // le fils
int ret execvp("le programme externe", 0);
// ici je regarde le code retour
}
...
Mon programme externe s'execute, va jusqu'a la fin, et mon code retour
est bon...
Les admin ont passes ma machine en centos4.0
maintenant, le programme externe s'execute toujours tres bien (j'ai
verifie qu'il s'execute jusqu'a la derniere ligne de code), par contre
le code retour est -1 (et errno = 10) !!!
Je peut supprimer le fork(), et remplacer tout par :
int ret = system("mon programme externe");
J'ai le meme probleme :(
bonjour,
je voulais faire un simple fork, avec le fils executant un code externe ...
sous redhat j avais ecrit un petit code du style :
int pif = fork();
if (pid == 0) { // le fils
int ret execvp("le programme externe", 0);
// ici je regarde le code retour
}
...
Mon programme externe s'execute, va jusqu'a la fin, et mon code retour
est bon...
Les admin ont passes ma machine en centos4.0
maintenant, le programme externe s'execute toujours tres bien (j'ai
verifie qu'il s'execute jusqu'a la derniere ligne de code), par contre
le code retour est -1 (et errno = 10) !!!
Je peut supprimer le fork(), et remplacer tout par :
int ret = system("mon programme externe");
J'ai le meme probleme :(
bonjour,
je voulais faire un simple fork, avec le fils executant un code externe ...
sous redhat j avais ecrit un petit code du style :
int pif = fork();
if (pid == 0) { // le fils
int ret execvp("le programme externe", 0);
// ici je regarde le code retour
}
...
Mon programme externe s'execute, va jusqu'a la fin, et mon code retour
est bon...
Les admin ont passes ma machine en centos4.0
maintenant, le programme externe s'execute toujours tres bien (j'ai
verifie qu'il s'execute jusqu'a la derniere ligne de code), par contre
le code retour est -1 (et errno = 10) !!!
Je peut supprimer le fork(), et remplacer tout par :
int ret = system("mon programme externe");
J'ai le meme probleme :(
C'est impossible que ton programme lancé par execvp se déroule
correctement et que tu puisse par la suite consulter le code retour "ret".
Il manque alors un morceau de code dans ton exemple et tu consultes le
code retour dans le père et pas dans le fils ? car si le execvp est bien
déroulé, alors tout le code suivant l'instruction exec du fils n'est
jamais executé (c.f. man execvp).
Le errno correspond a une erreur "ECHILD No child process".
observe cette erreur ECHILD dans le fils après avoir fait le execvp,
c'est que ton programme externe n'est pas lancé.
Comment est lancé ton programme C ? par cron ?
utilisateur particulier/different de celui avec lequel du developpe et
teste le programme ? variable d'environnement qui ont changé au passage
en centos4.0 (PATH, etc.), chemin d'accès a ton programme externe qui a
changé, repertoire qui ne sont plus accessbles à cet utilisateur ? ton
programme externe est un script dont l'interpreteur n'est pas installé/à
changé de place ?
C'est impossible que ton programme lancé par execvp se déroule
correctement et que tu puisse par la suite consulter le code retour "ret".
Il manque alors un morceau de code dans ton exemple et tu consultes le
code retour dans le père et pas dans le fils ? car si le execvp est bien
déroulé, alors tout le code suivant l'instruction exec du fils n'est
jamais executé (c.f. man execvp).
Le errno correspond a une erreur "ECHILD No child process".
observe cette erreur ECHILD dans le fils après avoir fait le execvp,
c'est que ton programme externe n'est pas lancé.
Comment est lancé ton programme C ? par cron ?
utilisateur particulier/different de celui avec lequel du developpe et
teste le programme ? variable d'environnement qui ont changé au passage
en centos4.0 (PATH, etc.), chemin d'accès a ton programme externe qui a
changé, repertoire qui ne sont plus accessbles à cet utilisateur ? ton
programme externe est un script dont l'interpreteur n'est pas installé/à
changé de place ?
C'est impossible que ton programme lancé par execvp se déroule
correctement et que tu puisse par la suite consulter le code retour "ret".
Il manque alors un morceau de code dans ton exemple et tu consultes le
code retour dans le père et pas dans le fils ? car si le execvp est bien
déroulé, alors tout le code suivant l'instruction exec du fils n'est
jamais executé (c.f. man execvp).
Le errno correspond a une erreur "ECHILD No child process".
observe cette erreur ECHILD dans le fils après avoir fait le execvp,
c'est que ton programme externe n'est pas lancé.
Comment est lancé ton programme C ? par cron ?
utilisateur particulier/different de celui avec lequel du developpe et
teste le programme ? variable d'environnement qui ont changé au passage
en centos4.0 (PATH, etc.), chemin d'accès a ton programme externe qui a
changé, repertoire qui ne sont plus accessbles à cet utilisateur ? ton
programme externe est un script dont l'interpreteur n'est pas installé/à
changé de place ?