Executer en programe externe en c

spider13 Messages postés 3 Statut Membre -  
Sri Lumpa Messages postés 177 Statut Membre -
Bonjour,est ce qu'on peut executer un programe externe en c?
Configuration: Linux Suse
Firefox 2.0.0.6

6 réponses

  1. kazouu Messages postés 466 Statut Membre 12
     
    man exec !

    http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/exec.3.html
    0
  2. Sri Lumpa Messages postés 177 Statut Membre 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
  3. nico
     
    c'est quoi un fork et comment on l'utilise?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. kazouu Messages postés 466 Statut Membre 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
  6. Sri Lumpa Messages postés 177 Statut Membre 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