lancer un exe/processus avec stdin, stdout et stderr?
Avec C++ comment puis-je lancer un exe/processus avec stdin, stdout et stderr? Je sais comment le faire .NET et je me souviens à l'aide de popen dans le passé, mais popen semble permettre stdin OU stdout pas à la fois et pas tous les 3.
J'en ai besoin pour windows, mais sous linux, la solution est la bienvenue car je vais en avoir besoin pour le même projet dans l'avenir.
OriginalL'auteur | 2011-03-30
Vous devez vous connecter pour publier un commentaire.
Vous devriez utiliser CreateProcess de WinApi. Elle prend comme argument un objet de
struct STARTUP_INFO
type. Vous pouvez définir hStdin, hStdout, et hStderr des champs de l'objet à réorienter les flux de processus enfant pour les descripteurs de fichiers que vous voulez (fichier, pipe, socket...)OriginalL'auteur Mihran Hovsepyan
J'ai eu des ennuis avec la ponte des processus et de la lecture ou l'écriture de leur flux, mais ensuite, j'ai découvert une bibliothèque C++ qui est très très pratique.
Ce projet open-source est appelé minuscule-processus-de la bibliothèque et a été créé par eidheim (un grand merci à lui).
Je partage ici parce que j'ai d'abord venir à ce fil avant de trouver la bibliothèque, plusieurs heures plus tard, donc j'espère que cela peut faire gagner du temps pour d'autres lecteurs.
OriginalL'auteur
Une solution portable serait coup de pouce.processus
(Note: il a été proposé qu'une bibliothèque Boost, et publié dans les mêmes conditions de licence, mais pas officiellement reconnus. Voir aussi Où est le coup de pouce.Processus?)
OriginalL'auteur MSalters