Salut cher journal,
j'ai un petit problème de programmation à te soumettre :
Comment exécuter une ligne de commande stockée dans un char* et récupérer le résultat dans un char* en C/C++ ?
J'arrive bien à exécuter ce que je veux avec la commande execv et ses copines exec*, mais le résultat s'affiche sur stdout. Je n'ai pas envie de rajouter "> toto" puis de lire le fichier toto car si je veux exécuter "ls / > tutu", ça ne marchera pas.
Plus généralement, est-il possible simplement de lancer un programme fils en parallèle depuis un autre programme, puis de lire ses sorties et d'écrire dans son entrée standard ?
Merci pour ton aide cher journal.
# Re: Récupérer le résultat d'un programme extérieur en C
Posté par Anonyme . Évalué à 5.
tu fais :
fils(int fdout)
{
if (fork()) return;
dup2(1, fdout);
dup2(2, fdout);
exec truc;
}
pere()
{
int fd[2];
pipe(fd);
fils(fd[1]);
lis fd[0];
}
c'est une méthode possible
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par Anonyme . Évalué à 1.
dup2(fdout, 1);
dup2(fdout, 2);
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par Kibos . Évalué à 1.
# Re: Récupérer le résultat d'un programme extérieur en C
Posté par Nap . Évalué à 1.
après tu t'en sers comme d'un fichier je crois
si tu insistes et si aucun gourou ne passe dans le coin d'ici la, j'essaierai de retrouver mon cahier de prog système unix ce soir :-)
# Re: Récupérer le résultat d'un programme extérieur en C
Posté par 01dN (site web personnel) . Évalué à 3.
pipe pour ouvrir un 'tunnel' entre le futur fils et le futur pere
puis fork pour obtenir deux processus,
fermeture des deux tubes inutiles,
redirections de stdin chez le pere et de stdout chez le fils.
Le fils enfin se termine par le lancement du programme voulu.
Le pere recois le stdout du fils dans son stdin.
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par Kibos . Évalué à 1.
# Re: Récupérer le résultat d'un programme extérieur en C
Posté par Pascal Terjan (site web personnel) . Évalué à 7.
#include <stdio.h>
FILE *plop;
int main(){
plop=popen ("ls /", 'r');
/* lire dans plop */
pclose (plop);
exit(0);
}
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par Kibos . Évalué à 1.
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par TazForEver . Évalué à 2.
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par Pascal Terjan (site web personnel) . Évalué à 1.
Pour le exit c'est quoi le problème ?
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par Sidoine de Wispelaere . Évalué à 3.
En plus là ça sert à rien, un simple return aurait fait l'affaire.
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par Samuel Pajilewski . Évalué à 0.
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par TazForEver . Évalué à 1.
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par TazForEver . Évalué à 2.
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par Samuel Pajilewski . Évalué à -1.
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par Anonyme . Évalué à 2.
par ex:
http://www.langue-fr.net/index/A/au_temps-autant.htm(...)
y avait le tlfi mais l'url est morte...
enfin bon, c'est pas bien grave :)
# Re: Récupérer le résultat d'un programme extérieur en C
Posté par Gauthier Monserand (site web personnel) . Évalué à 2.
il y a la doc dans 'assistant'
[^] # Re: Récupérer le résultat d'un programme extérieur en C
Posté par TazForEver . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.