[c++] console : intercepter les sorties standards et d'erreur

console : intercepter les sorties standards et d'erreur [c++] - Programmation

Marsh Posté le 28-03-2002 à 11:30:24    

apres avoir effectué une commande au moyen de system("MaCommande" ), je souhaiterais intercepter les flux pour pouvoir les traiter dans  la suite de mon programme.
 
comment faire ?

Reply

Marsh Posté le 28-03-2002 à 11:30:24   

Reply

Marsh Posté le 28-03-2002 à 12:37:00    

? "MaCommande > FichierDesBalblasDeLaCommande.txt" ? On lit ensuite le fichier txt (le > redirige ce qui devrait sortir à l'écran). Ai peut-être pas compris...
 
 
C'est pour intercepter le flux de sortie standard ?

Reply

Marsh Posté le 28-03-2002 à 12:47:18    

Le mieux, c'est d'ouvrir des tubes :
 
int toto[2];
int titi[2];
 
pipe(toto);
pipe(titi);
 
if((pid=fork())!=0)
{
close(toto[1]);
close(titi[1]);
 
... (toto[0] contient l'entrée standard du fils, et titi[0] sa sortie)
waitpid(pid,NULL,0); pour attendre le fils
}
else
{
close(toto[0]);
close(titi[0]);
dup2(toto[1],0);
dup2(titi[1],1);
execvp("monprogramme",arguments);
perror("execvp" );
}
 
 
Y'a aussi popen, mais c'est moins perfectionné.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 28-03-2002 à 13:15:42    

va sur la msdn et recherche un truc "redirecting stdin and stdout" ou un truc du genre, c exactement ce que tu cherches

Reply

Marsh Posté le 28-03-2002 à 13:49:19    

il faut quelles librairies pour utiliserr pipe & cie ?

Reply

Marsh Posté le 28-03-2002 à 13:59:00    

farib a écrit a écrit :

il faut quelles librairies pour utiliserr pipe & cie ?


C'est tout standard, il suffit d'inclure unistd.h.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 28-03-2002 à 16:03:08    

unistd... pour unix ???
 
(moi ce sera sous linux)

Reply

Marsh Posté le 28-03-2002 à 16:48:18    

Oui, unistd.h, c'est partout où tu as un compilateur C.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 29-03-2002 à 12:05:38    

et sous windows ?
paske  je pense pas ke il y ait
winstd... :D

Reply

Marsh Posté le 29-03-2002 à 12:43:10    

http://msdn.microsoft.com/library/ [...] d_4uus.asp


---------------
VT ... Vaucluse / Vrille(euse :sarcastic: ) c'est pareil tant qu'il y a l'humour :D
Reply

Marsh Posté le 29-03-2002 à 12:43:10   

Reply

Marsh Posté le 29-03-2002 à 13:28:09    

farib a écrit a écrit :

et sous windows ?
paske  je pense pas ke il y ait
winstd... :D


Non, mais il y a cygwin.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Marsh Posté le 29-03-2002 à 23:11:10    

et s'utilise comment ?

Reply

Marsh Posté le 29-03-2002 à 23:14:41    

http://www.cygwin.com/
 
Tu installes gcc et quelques autres trucs, et tu as un vrai environnement de développement.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed