Executer en programe externe en c

spider13 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
Sri Lumpa Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,est ce qu'on peut executer un programe externe en c?

6 réponses

kazouu Messages postés 466 Date d'inscription   Statut Membre Dernière intervention   12
 
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   Statut Membre Dernière intervention   69
 
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   Statut Membre Dernière intervention   12
 
0
nico
 
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   Statut Membre Dernière intervention   12
 
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   Statut Membre Dernière intervention   69
 
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