starten Sie eine exe-Datei/Prozesses mit stdin, stdout und stderr?
Mit C++ wie starte ich eine exe/Prozesses mit stdin, stdout und stderr? Ich weiß, wie dies zu tun .NET und ich erinnere mich, mit popen in der Vergangenheit, aber popen scheint damit stdin ODER stdout nicht beide und nicht alle 3.
Brauche ich das für windows, sondern eine linux-Lösung ist willkommen, wie ich es benötige für das gleiche Projekt in der Zukunft.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte man verwenden CreateProcess aus der WinApi. Es nimmt als argument ein Objekt der
struct STARTUP_INFO
geben. Sie können hStdin, hStdout, und hStderr Felder des Objekts umleiten diese Ströme der Kind-Prozess zu Datei-handles, die Sie möchten (Datei, pipe, socket...)Tragbare Lösung wäre boost.Prozess
(Hinweis: dies wurde vorgeschlagen, als ein Boost-library, und veröffentlicht unter den gleichen Lizenzbedingungen, wird aber offiziell nicht akzeptiert. Siehe auch Wo ist Boost.Prozess?)
Hatte ich Probleme mit der Laichzeit der Prozesse und Lesen oder schreiben, um Ihren stream, aber dann entdeckte ich eine große C++ - Bibliothek, die sehr sehr bequem.
Dieser open-source-Projekt namens tiny-Prozess-Bibliothek und wurde von eidheim (ein großer Dank an ihn).
Teile ich dieses hier, weil ich das erste mal in diesem thread zu finden, bevor die Bibliothek einige Stunden später, so hoffe ich, es können sparen Sie einige Zeit für weitere Leser.