Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/08/2007, à 14:53

jalelouss

Appel a un autre programme a travers un programme ecrit en c++

Salut tt le monde , je cherchais une fonction qui me donne la possiblité de faire appel a autre programme a travers a un travers programme c++

Hors ligne

#2 Le 08/08/2007, à 15:00

Vegetable

Re : Appel a un autre programme a travers un programme ecrit en c++

std::system dans cstdlib.
(et en appel système de linux tu as aussi les exec(l|lp|le|v|vp) : fais "man execl" pour plus d'informations)

Dernière modification par Vegetable (Le 08/08/2007, à 15:04)

Hors ligne

#3 Le 09/08/2007, à 08:57

littleblackdog

Re : Appel a un autre programme a travers un programme ecrit en c++

oui, execl fonctionne très bien.
après, si tu veux que les programmes appelant et appelé tournent en parallèle, la procédure est un peu plus complexe ; typiquement :

if (fork()) {
    ...
   code de ton programme appelant
}
else {
   execl(<arguments correspondant à ton programme appelé>)
}

si tu veux en plus qu'ils dialoguent entre eux, il faut encore rajouter certaines choses, en particulier si mes souvenirs de programmation système sont bons, fermer les E/S avec close(), y substituer les pid correspondants avec dup(), et/ou pipe().
enfin, un truc du style. ça fait longtemps que j'ai plus fait ça. tongue

Dernière modification par littleblackdog (Le 09/08/2007, à 08:57)

Hors ligne

#4 Le 09/08/2007, à 12:14

Vegetable

Re : Appel a un autre programme a travers un programme ecrit en c++

Bon dans ton code, fork() peut foirer si il n'arrive pas à créer un nouveau processus ( ce qui peut être le cas si l'utilisateur a mis des ulimit, ou bien si il n'y a plus de mémoire)... Il vaut toujors mieux de vérifier le retour des appels système.

int pid;
if (pid=fork())
{
 code appelant
}
else
if (pid<0)
{
 erreur de fork 
}
else
{
 execl
}

Hors ligne

#5 Le 09/08/2007, à 19:30

jalelouss

Re : Appel a un autre programme a travers un programme ecrit en c++

ET si je veux exécuter cet autre programme en mode Background (en arriere plan ) comment je fais ,

Hors ligne