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 ?