AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [C++] Rediriger les textes console

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
glcraft
Utilisateur confirmé: Rang *****
avatar

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: [C++] Rediriger les textes console   Mer 15 Oct 2014 - 20:11

Salut a tous,
Je voulais savoir s'il était possible de rediriger les textes de la console vers une application en particulier et non par l'invité de commande sous windows ?
Par exemple, je crée une application console "truc.exe" avec :

Code:
int main(int argc, char**argv)
{
    cout<<"Hello world";
}



et dans mon application "MonApplication.exe", que lorsque je lance truc.exe, le cout se redirige dessus, dans MonApplication.exe
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
daminetreg
Administrateur
avatar

Messages : 16994
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

MessageSujet: Re: [C++] Rediriger les textes console   Mer 15 Oct 2014 - 22:20

Salut gabin49,

Oui tu peux utiliser pour ceci Boost.Process. La librarie est très stable mais n'a pas encore été intégrée dans boost, elle est très stable et n'a juste pas passé de review depuis longtemps parce que ses développeurs ont pas trop le temps.

http://www.highscore.de/boost/process0.5/

Comment récupérer la sortie du programme que tu démarres :
http://www.highscore.de/boost/process0.5/boost_process/tutorial.html#boost_process.tutorial.synchronous_i_o

Tu peux télécharger cela ici : http://www.highscore.de/boost/process0.5/process.zip

J'ai déjà pas mal bossé avec et je trouve que cela marche du tonerre sur toutes les plateformes grâce une bonne abstraction du principe des processus.

_________________
Mon CV : fr - de - en
Le CBNA Tous Ensemble! Réalisons!
Revenir en haut Aller en bas
http://lecbna.org/
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1337
Localisation : Grenoble / Méribel
Projet Actuel : CBNA

MessageSujet: Re: [C++] Rediriger les textes console   Sam 18 Oct 2014 - 18:46

Sous linux, ce que tu voudrais faire est un pipe |
par exemple : p1.exe | p2.exe
En gros rediriger la sortie d'un programme vers l'entrée d'un autre.

J'ai regardé si il y avait un équivalent dans Windows.
Entonnement oui.

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true

J'ai pas essayé, donne nous des nouvelles.

tuto:
-faire tes 2 programmes:
-ouvre une console (ctrl+R -> programme:cmd). Une fenêtre noir s'ouvre.
-dirige toi vers un répertoire contenant tes 2 programmes : "cd <ton répertoire>"
-p1 | p2 (ou bien p1.exe | p2.exe)

J'espère que cela ton conviendra.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
avatar

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: Re: [C++] Rediriger les textes console   Sam 18 Oct 2014 - 20:41

ouais mais le principe c'est que je veux faire une appli console. on peut pas faire de cin>> avec le pipe.
Je devrai regarder pour boost mais jai jamais reussi a le compiler (le module process et thread Razz...
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Sekigo Le Magnifique
Utilisateur confirmé: Rang *****
avatar

Messages : 1720

MessageSujet: Re: [C++] Rediriger les textes console   Dim 19 Oct 2014 - 17:19

Tu peux décrire précisément ce que tu veux ?
Parce que hier, j'ai voulu répondre comme arthuro. Mais je me doutais que ce n'est pas ce que tu voulais.

Les deux programmes sont à toi ? Tu veux les faire communiquer ? Y a d'autres moyens plus simple que les pipes via processus pour le faire. Typiquement, un système de message via un fichier/sqlite/redis/whatever.
Tu veux que n1 aille écrire et lire stdout et stdin de n2 ? Ça ne doit pas être compliqué à faire, faut faire un parser sur n1. Pas compliqué à réaliser sur papier, mais à implémenter, ça peut vite être ******.
Tu veux que stdout de n1 aille dans stdin de n2 ? La solution a déjà été donnée.

Et je peux encore continuer comme ça. Essaye d'expliquer clairement ce que tu veux pour avoir une réponse claire. On serait sur stackoverflow, ta question serait fermé direct.
Revenir en haut Aller en bas
http://s2.noelshack.com/old/up/gmzonecbna-3cfbc56d25.jpg
glcraft
Utilisateur confirmé: Rang *****
avatar

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: Re: [C++] Rediriger les textes console   Dim 19 Oct 2014 - 19:48

c'est vrai que c'est peut etre mal expliqué ^^

En fait, on va admettre que je veux remplacer la console parce qu'elle est moche XD (mais c'est plus complexe). Si je lance n2 via "run n2" par exemple ou simplement "n2", tout le texte qui sort de n2 grace a des "echo" ou a des "stdout", je veux les rediriger vers mon application qui fera office de console a son tour (car elle la remplace). 
Comme tu l'as dit, "[Je] veux que n1 aille écrire et lire stdout et stdin de n2" sachant que n1 est mon application
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Sekigo Le Magnifique
Utilisateur confirmé: Rang *****
avatar

Messages : 1720

MessageSujet: Re: [C++] Rediriger les textes console   Dim 19 Oct 2014 - 21:10

C'est déjà plus clair. Tu veux un wrapper autour d'un logiciel pour "améliorer" son interface, sans toucher au logicel ciblé.

En gros, tu veux un machin comme ça: Pexpect
En recherchant vite fait sur le net, on tombe sur un truc nommé libexpect en C++. Un exemple d'utilisation ici.

Par la même, ça m'intéresse (le premier lien) parce que j'avais eu un besoin similaire quand j'ai commencé mon travail actuel. On était sous Windows (ça a changé, ouf) et j'avais besoin d'afficher les caractères étrangers dans cette saloperie de console windows pour utiliser un logiciel en cli que j'avais fait.
Du coup, j'ai fais un wrapper en Qt, mais j'avais le contrôle sur la source et la cible. Si jamais j'ai un besoin similaire, y a déjà un truc tout fait qui existe.
Revenir en haut Aller en bas
http://s2.noelshack.com/old/up/gmzonecbna-3cfbc56d25.jpg
daminetreg
Administrateur
avatar

Messages : 16994
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

MessageSujet: Re: [C++] Rediriger les textes console   Mar 21 Oct 2014 - 19:43

gabin49 a écrit:
ouais mais le principe c'est que je veux faire une appli console. on peut pas faire de cin>> avec le pipe.
Je devrai regarder pour boost mais jai jamais reussi a le compiler (le module process et thread Razz...
C'est header only, Boost.Process n'est pas Boost.Thread ou Boost.Interprocess, suffit d'inclure les headers.

_________________
Mon CV : fr - de - en
Le CBNA Tous Ensemble! Réalisons!
Revenir en haut Aller en bas
http://lecbna.org/
glcraft
Utilisateur confirmé: Rang *****
avatar

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: Re: [C++] Rediriger les textes console   Mar 21 Oct 2014 - 21:35

ah ok pour process, c'est mal lu XD
mais pour boost thread, c'est parfois bien dommage :/
si quelqu'un sait comment le compiler avec C::B, je suis a l'ecoute Wink
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
Contenu sponsorisé




MessageSujet: Re: [C++] Rediriger les textes console   

Revenir en haut Aller en bas
 
[C++] Rediriger les textes console
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» * Pécule ou aide à la reconversion - Textes règlementaires ....
» enfant et console de jeux
» Textes fondateurs du Mt St Michel.
» [RECH] Embase de téléphone Philips pour console centrale
» Détournements de textes (et autres stupidités)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: