#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.
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