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
Bonjour,est ce qu'on peut executer un programe externe en c?

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
man exec !

http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/exec.3.html
0
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
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.
0
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
0
c'est quoi un fork et comment on l'utilise?
0

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
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 */

}
}
0
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
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
}
0