C++ Redirection sortie standard d'une console
Fermé
Thesmarch
-
8 juin 2012 à 11:03
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 juin 2012 à 14:50
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 juin 2012 à 14:50
A voir également:
- C++ Redirection sortie standard d'une console
- Console action - Accueil - Jeu vidéo
- Pilote son standard - Télécharger - Pilotes & Matériel
- Netflix standard avec pub avis - Accueil - Streaming
- Airpods 3 date de sortie - Guide
- Remettre un pc en sortie d'usine - Guide
6 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
8 juin 2012 à 11:38
8 juin 2012 à 11:38
Bonjour,
Ce n'est pas du C++... Ne serait-ce pas plutôt du C# ?
Ce n'est pas du C++... Ne serait-ce pas plutôt du C# ?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
8 juin 2012 à 14:02
8 juin 2012 à 14:02
En effet, ce n'est pas du C++.
Je ne connais pas le C#, mais si c'est compatible avec les fonction C, il est possible d'utiliser popen https://linux.die.net/man/3/popen qui te permettra d'utiliser la sortie standard de ta commande comme un fichier.
Je ne connais pas le C#, mais si c'est compatible avec les fonction C, il est possible d'utiliser popen https://linux.die.net/man/3/popen qui te permettra d'utiliser la sortie standard de ta commande comme un fichier.
Merci pour votre aide!
Effectivement popen semble être une bonne idée.
J'ai du ajouter un : #include <conio.h>
Ainsi qu'un "_" avant "popen" afin qu'il fonctionne en C++ winform.
J'ai donc modifié mon code en :
Mais rien ne s'affiche dans la textBox2.
(Avec le debuger: str="")
Effectivement popen semble être une bonne idée.
J'ai du ajouter un : #include <conio.h>
Ainsi qu'un "_" avant "popen" afin qu'il fonctionne en C++ winform.
J'ai donc modifié mon code en :
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { FILE *output = _popen("ffmpeg -i", "r"); _pclose(output); char buffer[1024]; char *line_p = fgets(buffer, sizeof(buffer), output); String ^ str = gcnew String(line_p); textBox2->AppendText(str); }
Mais rien ne s'affiche dans la textBox2.
(Avec le debuger: str="")
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
8 juin 2012 à 15:33
8 juin 2012 à 15:33
On le redit, ce n'est pas du C++.
Après avoir regardé vite fait, il semblerait que ce soit du C++ .NET.
Bizarre de devoir inclure conio.h pour _popen... _popen() est défini dans stdio.h
Après avoir regardé vite fait, il semblerait que ce soit du C++ .NET.
Bizarre de devoir inclure conio.h pour _popen... _popen() est défini dans stdio.h
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
8 juin 2012 à 15:58
8 juin 2012 à 15:58
Tu ferme ton output directement après l'avoir ouvert. Logique que tu n'aies rien, on ne peut lire sur un fichier fermé. Il faut mettre ton pclose() après la lecture.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Malheureusement même comme ça:
Ça ne fonctionne pas :(
Une autre idée?
Merci
FILE *output = _popen("ffmpeg -i", "r"); char buffer[1024]; char *line_p = fgets(buffer, sizeof(buffer), output); String ^ str = gcnew String(line_p); textBox2->AppendText(output); _pclose(output);
Ça ne fonctionne pas :(
Une autre idée?
Merci
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
8 juin 2012 à 16:52
8 juin 2012 à 16:52
Quand, je dis que ce n'est pas du C++, ce n'est pas pour faire mon chieur. Mais c'est pour dire qu'il ne faut pas chercher du côté du C ou du C++...
Je ne connais pas ce langage, mais il semble s'agir de VC ++ .Net. J'ai donc recherché sur google. Ce lien devrait t'intéresser :
https://dotnet.developpez.com/faq/cppcli/?page=Multithreading#redirectoutputprocess
Je ne connais pas ce langage, mais il semble s'agir de VC ++ .Net. J'ai donc recherché sur google. Ce lien devrait t'intéresser :
https://dotnet.developpez.com/faq/cppcli/?page=Multithreading#redirectoutputprocess
String ^ RedirectStdOutput(String ^nomProcess) { System::Diagnostics::Process ^ proc = gcnew System::Diagnostics::Process(); // On désactive le shell proc->StartInfo->UseShellExecute = false; // On redirige la sortie standard proc->StartInfo->RedirectStandardOutput = true; // On définit la commande proc->StartInfo->FileName = nomProcess; // Démarrage de la commande proc->Start(); // Attente de la fin de la commande proc->WaitForExit(); // Lecture de la sortie de la commande String ^ output = proc->StandardOutput->ReadToEnd(); // Libération des ressources proc->Close(); return output; }
Oui en effet j'ai utilisé cette solution dans un premier temps (mon premier post) mais le problème avec celle-ci c'est que la ligne de commande que je veux passer au terminal n'est pas exécutée, j'ai donc uniquement ça qui s'affiche:
Microsoft Windows XP [version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
D:\Documents and Settings\user\Bureau\blackDetect\blackDetect>
Ce que je passe en argument n'est pas pris en compte.
Merci pour ton aide fiddy
Microsoft Windows XP [version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
D:\Documents and Settings\user\Bureau\blackDetect\blackDetect>
Ce que je passe en argument n'est pas pris en compte.
Merci pour ton aide fiddy
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
9 juin 2012 à 14:50
9 juin 2012 à 14:50
Malheureusement, je vais pas pouvoir t'aider plus. Je ne connais pas ce langage. Même si cela peut s'approcher parfois du C++, il faut chercher du côté de la fonction donnée ci-dessous (et pas regarder du côté de _popen à mon avis, ça sera pas propre). En espérant que tu trouves un spécialiste du C++.Net ;-)))