53

Ich muss ein Programm ausführen und seine Stdout-Ausgabe in C++ abrufen. Ich möchte, dass mein Code auch plattformübergreifend ist.Wo ist Boost.Process?

Nachdem ich kürzlich die wundervolle Welt der Boost C++ - Bibliotheken für all Ihre plattformübergreifenden Bedürfnisse entdeckt habe, dachte ich mir, ich würde einfach auf boost.org gehen und die Dokumentation von Boost.Process lesen. Zu meiner Überraschung war es nicht da! Ich fuhr dann fort, herauszufinden, welchen Namen Boost ihrer plattformübergreifenden Bibliothek gegeben hat, um externe Prozesse zu starten, aber es bisher nicht geschafft, sie zu finden.

Eine Google-Suche brachte mich zu Julio M. Merino Vidals Boost.Process, die die inoffizielle Boost-Bibliothek zu sein scheint, nach der ich suchte. Seltsamerweise kann ich keinen Download-Link auf dieser Website finden. Es scheint auch, dass es keine neuen Entwicklungen in Bezug auf das Projekt gab.

Ich konnte endlich einen Download-Link für Vidals Boost.Process auf einer external site finden und werde das für jetzt nutzen, aber ich bin ziemlich erstaunt über die Mühe, die ich investieren musste, um eine Cross-Plattform zu bekommen C++ Bibliothek für die Interaktion mit externen Prozessen.

Also, warum gibt es keinen offiziellen Boost.Process? Es scheint, als wäre es eine sehr wertvolle Ergänzung. Oder übersehe ich die offensichtliche Lösung hier völlig? Können Sie vielleicht andere plattformübergreifende Bibliotheken vorschlagen, um das einfache Starten und die Interaktion mit externen Prozessen zu verwalten?

+1

Herzlichen Glückwunsch zu der Entdeckung - Boost-Felsen! – vehomzzz

+0

Boost rockt, aber es gibt noch keine offizielle Prozessbibliothek. Für das, was es wert ist, habe ich die Poco Process Bibliothek in der Vergangenheit erfolgreich benutzt (Google für die Poco C++ Bibliotheken für mehr Information). – StackedCrooked

Antwort

29

Julio M. Merino Vidal, wer ist, glaube ich, der ursprüngliche Autor, schrieb in this 2007 post, dass er keine Zeit hatte, um es zu vervollständigen.

Entwicklung wurde von Boris Schaeling übernommen. Dies ist die Version, die Sie unter http://www.highscore.de/boost/process/ gefunden haben. Gemäß dieser post entwickelt er es noch aktiv.

Es gibt eine andere Version, von Ilya Sokolov.

Für Ihre andere Frage:

Könnten Sie vielleicht andere Cross-Plattform-Bibliotheken vorschlagen einfache Starten und interation mit externen Prozesse zu managen?

können Sie this wiki page Listenalternativen betrachten.

Abhängig von Ihren Bedürfnissen könnte popen() auch die Arbeit erledigen.

+7

Nur um die Informationen hier zu vervollständigen, würde ich den [Überprüfungsplan] (http://www.boost.org/community/review_schedule.html) verlinken, in dem steht, dass boost.process [abgelehnt] wurde (http: // lists.boost.org/boost-announce/2011/03/0292.php). – dave

+3

Diese Antwort ist nicht mehr aktuell, siehe Community-Wiki-Antwort. – Klaim

1

Teile Boost.Process sind in mehreren eigenständigen Bibliotheken in Boost-jetzt verfügbar: Boost.Interprocess, Programmoptionen usw.

3

Es sieht aus wie Boost.Process im sandbox area ist, was, dass es würde vorschlagen wurde zur Aufnahme vorgeschlagen und wird wahrscheinlich noch bearbeitet, wurde aber nicht als stabil, dokumentiert und/oder nützlich genug angesehen, um in die Haupt-Boost-Veröffentlichung aufgenommen zu werden.

4

Eine weitere Option könnte die modular POCO gestaltet werden, siehe Process::launch() die eine Überlastung hat die Pipes für in nimmt, aus und Fehler.

8

Boost Process war eines der Google Summer of Code-Projekte in diesem Jahr. Die Webseite des GSOC 2010 Boost Process ist http://www.highscore.de/boost/gsoc2010/.

Die Bibliothek ist immer noch inoffiziell, aber ihre Entwickler glauben, dass es stabil genug ist, um request formal review.

+2

http://lists.boost.org/Archives/boost/2010/08/169915.php – vladr

+2

Es wurde aufgrund verschiedener Bedenken abgelehnt, ich hoffe, dass sie sich an diese wenden und erneut einreichen werden. – maep

54

Boost.Process accepted for inclusion into Boost on November 9, 2016 war hilft; und has been included in the 1.64 veröffentlicht am 19. April 2017. Boost.Process ist jetzt eine offizielle Boost-Bibliothek!

Es Dokumentation finden Sie hier: http://www.boost.org/doc/libs/1_64_0/doc/html/process.html


Für die Aufzeichnung der Quellen, die vom 27. Oktober wurden überprüft, 2016 bis 5. November 2016 sind auf GitHub verfügbar:

Download: https://github.com/klemens-morgenstern/boost-process

Handbuch: http://klemens-morgenstern.github.io/process/index.html


Sie können im Internet mehrere ältere Versionen dieser Bibliothek finden. Sie sind alle mehr oder weniger unvereinbar:

  • Version 0.5 (neueste, wie der 3. Dez 2012)

Download: http://www.highscore.de/boost/process0.5/process.zip

Handbuch: http://www.highscore.de/boost/process0.5/index.html

  • Version GSOC2010

Download: http://www.highscore.de/boost/gsoc2010/process.zip

Handbuch: http://www.highscore.de/boost/gsoc2010/

  • Version 0,31

Download: http://www.highscore.de/boost/process.zip

Manuell1: http://www.highscore.de/boost/process/

manual2: http://www.highscore.de/cpp/process/

Ich denke, es ist das gleiche wie in http://svn.boost.org/svn/boost/sandbox/process/boost/

  • I.S. Version 0.1-0.4

Download: https://github.com/boost-vault/Process

  • Version 0?

Download: http://www.netbsd.org/~jmmv/process.zip

Handbuch: http://www.netbsd.org/~jmmv/process/

Es andere Version, die wie Zweige aussehen: https://github.com/JeffFlinn/boost-process und https://github.com/boost-vault/Process.

Für eine Teil Geschichte des Projektes, Blick auf http://www.highscore.de/cpp/process/#introduction

2

Für Juli 2015 scheint es, wie Boost.Process wieder scheduled für die Boost formalen Überprüfung war.