Executer en programe externe en c
Fermé
spider13
Messages postés
3
Date d'inscription
dimanche 8 juin 2008
Statut
Membre
Dernière intervention
18 juin 2008
-
18 juin 2008 à 14:56
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 - 18 juin 2008 à 16:48
Sri Lumpa Messages postés 177 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 1 juin 2010 - 18 juin 2008 à 16:48
6 réponses
kazouu
Messages postés
466
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
24 juillet 2008
12
18 juin 2008 à 14:59
18 juin 2008 à 14:59
man exec !
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/exec.3.html
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/exec.3.html
Sri Lumpa
Messages postés
177
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
1 juin 2010
69
18 juin 2008 à 16:27
18 juin 2008 à 16:27
Plus précisément si tu veux le lancer en parallèle, fork() pour créer un processus fils suivi de exec() pour lancer ton programme externe.
kazouu
Messages postés
466
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
24 juillet 2008
12
18 juin 2008 à 16:29
18 juin 2008 à 16:29
je l'avais deja dit sur ce poste :
http://www.commentcamarche.net/forum/affich 6959352 c lancer un programme silencieusement#dernier
http://www.commentcamarche.net/forum/affich 6959352 c lancer un programme silencieusement#dernier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kazouu
Messages postés
466
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
24 juillet 2008
12
18 juin 2008 à 16:35
18 juin 2008 à 16:35
un fork est une fonction qui premet de creer un processus fils a celui qui est en cour et tu l'utilise comme ceci
pid = fork();
/* En cas de reussite du fork, le pere et le fils poursuivent leur
execution a partir d'ici. La valeur de pid permet de distinguer
le pere du fils.
*/
switch(pid) {
case -1: /* erreur dans fork() */
fprintf(stderr,"error %d in fork: %s\n",errno,sys_errlist[errno]);
exit(errno);
case 0: /* on est dans le fils */
break;
default: /* on est dans le pere */
}
}
pid = fork();
/* En cas de reussite du fork, le pere et le fils poursuivent leur
execution a partir d'ici. La valeur de pid permet de distinguer
le pere du fils.
*/
switch(pid) {
case -1: /* erreur dans fork() */
fprintf(stderr,"error %d in fork: %s\n",errno,sys_errlist[errno]);
exit(errno);
case 0: /* on est dans le fils */
break;
default: /* on est dans le pere */
}
}
Sri Lumpa
Messages postés
177
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
1 juin 2010
69
18 juin 2008 à 16:48
18 juin 2008 à 16:48
L'intérêt d'utiliser un fork() avant de lancer la fonction exec() c'est que cette dernière va effacer ENTIEREMENT l'ensemble du code qui la suit... Ainsi tu peux faire :
pid = fork() if(pid == 0){ // On est dans le processus fils exec(/*les différents arguments, jette un coup d'oeil dans le man ;) */); // Le code qui suit ne sera jamais executé sauf si il y a une erreur au moment du lancement de la fonction exec // L'empechant de s'exécuter fprintf(stderr, "Erreur lors de le lancement de la fonction exec()"); perror("exec"); } else { // Ici, on est dans le processus père }