Gotscha
Messages postés4Date d'inscriptionvendredi 17 août 2007StatutMembreDernière intervention14 janvier 2008
-
6 déc. 2007 à 18:45
Gotscha
Messages postés4Date d'inscriptionvendredi 17 août 2007StatutMembreDernière intervention14 janvier 2008
-
10 déc. 2007 à 19:04
Bonjour à tous,
J'ai un petit problème en C que je n'arrive pas à comprendre :
Voici la partie de mon code qui me pose problème :
<hr size="2" width="100%" />if (fork() == 0){
execlp("ls","ls","*.fra",NULL);
perror("ls");
exit(5);
}
wait(&status);
if (status != 0){
perror("fork");
exit(4);
}
<hr size="2" width="100%" />
J'aimerai savoir pourquoi, lorsque je lance mon script, il s'affiche sous unix :
ls: *.fra: Aucun fichier ou répertoire de ce type
fork: Success
2 choses :
- pourquoi mon ls ne fonctionne pas avec mon paramètre *.fra
- pourquoi mon perror("fork") affiche :Sucess
alors qu'il sait pertinament que le fork à échoué puisque le status est à -1
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 7 déc. 2007 à 12:31
Salut
Est ce que ton programme marche en mettant à la place de "*.fra" , "-l" ?
Sinon comment tu peut savoir si ton fork à échoué, tu ne testes pas son retour:
pid=fork();
if (pid == 0) //Processus fils
if (pid ==-1) //Erreur du fork
else //Processus père
Je ne pense pas que le fork echoue parce que dans ce cas la, le processus père est arreté à la ligne wait et il n'y a personne pour le débloquer...
Status sera le code de retour du processus fils, donc regarde les codes de retour du "ls"
si 1, je pense que ca signifie que le ls à été correctement effectué.
A+