console : intercepter les sorties standards et d'erreur [c++] - Programmation
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 ? 
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é. 
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
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.
Marsh Posté le 28-03-2002 à 16:48:18
Oui, unistd.h, c'est partout où tu as un compilateur C.
Marsh Posté le 29-03-2002 à 12:05:38
et sous windows ? 
paske  je pense pas ke il y ait 
winstd...  
 
Marsh Posté le 29-03-2002 à 12:43:10
http://msdn.microsoft.com/library/ [...] d_4uus.asp
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...   | 
Non, mais il y a cygwin.
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. 
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 ?