Rechercher : dans
Par :

Executer en programe externe en c

Dernière réponse le 18 jun 2008 à 16:48:51 spider13, le 18 jun 2008 à 14:56:47 
 Signaler ce message aux modérateurs

Bonjour,est ce qu'on peut executer un programe externe en c?

Configuration: Linux Suse
Firefox 2.0.0.6

Meilleures réponses pour « executer en programe externe en c » dans :
Compiler un programme en C avec Dev C++ sous Vista VoirIl est très probable que vous ayez des problèmes lors de la compilation d'une source C sous Vista avec Dev C++. Solution rapide de secours: le compilateur g++ Voici une astuce pour Dev-Cpp : Aller dans "Outils" -> "Options du compilateur" puis...

1

kazouu, le 18 jun 2008 à 14:59:11
Répondre à kazouu

2

Sri Lumpa, le 18 jun 2008 à 16:27:24

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.

Répondre à Sri Lumpa

3

kazouu, le 18 jun 2008 à 16:29:40
Répondre à kazouu

4

nico, le 18 jun 2008 à 16:32:51

C'est quoi un fork et comment on l'utilise?

Répondre à nico

5

kazouu, le 18 jun 2008 à 16:35:58

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

}
}

Répondre à kazouu

6

 Sri Lumpa, le 18 jun 2008 à 16:48:51

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
}

Répondre à Sri Lumpa