J'ai besoin d'exécuter un programme et de récupérer sa sortie stdout en c ++. J'aimerais que mon code soit également multiplateforme.
Ayant récemment découvert le monde merveilleux des bibliothèques Boost c ++ pour tous vos besoins multiplates-formes, je me suis dit que je devrais simplement aller sur boost.org et lire la documentation de Boost.Process. À ma grande surprise, ce n'était pas là! J'ai ensuite cherché à savoir quel nom Boost a donné à sa bibliothèque multiplateforme pour démarrer des processus externes, mais je n'ai pas réussi à le trouver jusqu'à présent.
Une recherche Google m'a amené à Julio M. Merino Vidal Boost.Process , qui semble être la bibliothèque Boost non officielle que je cherchais. Curieusement, je n'arrive pas à trouver un lien de téléchargement sur ce site. Il semble également qu'il n'y ait eu aucun développement récent concernant le projet.
J'ai finalement pu trouver un lien de téléchargement pour Vidal's Boost.Process sur un site externe et je vais l'utiliser pour l'instant, mais je suis assez étonné de l'effort que j'ai dû déployer pour mettre la main sur sur une bibliothèque c ++ multiplateforme pour interagir avec des processus externes.
Alors, pourquoi n'y a-t-il pas de processus Boost officiel? Il semble que ce serait un ajout très précieux. Ou est-ce que je néglige totalement la solution évidente ici? Pourriez-vous peut-être suggérer d'autres bibliothèques multiplateformes pour gérer le démarrage simple et l'interaction avec des processus externes?
Julio M. Merino Vidal, qui est, je crois, l'auteur original, a écrit dans ce billet de 2007 qu'il n'avait pas eu le temps de le terminer.
Le développement a été repris par Boris Schaeling. Il s'agit de la version que vous avez trouvée sur http://www.highscore.de/boost/process/ . Selon cela post , il le développe toujours activement.
Il existe une autre version, par Ilya Sokolov .
Pour votre autre question:
Pourriez-vous peut-être suggérer d'autres bibliothèques multiplateformes pour gérer le démarrage simple et l'interaction avec des processus externes?
vous pouvez regarder cette page wiki listant les alternatives.
Selon vos besoins, popen () pourrait également faire le travail.
Boost.Process était accepté pour inclusion dans Boost le 9 novembre 2016 ; et a été inclus dans le 1.64 publié le 19 avril 2017. Boost.Process est maintenant une bibliothèque officielle de Boost!
Sa documentation est disponible ici: http://www.boost.org/doc/libs/1_64_0/doc/html/process.html
Pour mémoire, les sources qui ont été examinées du 27 octobre 2016 au 5 novembre 2016 sont disponibles sur GitHub:
télécharger: https://github.com/klemens-morgenstern/boost-process
manuel: http://klemens-morgenstern.github.io/process/index.html
Vous pouvez trouver sur le Web plusieurs anciennes versions de cette bibliothèque. Ils sont tous plus ou moins incompatibles:
télécharger: http://www.highscore.de/boost/process0.5/process.Zip
manuel: http://www.highscore.de/boost/process0.5/index.html
télécharger: http://www.highscore.de/boost/gsoc2010/process.Zip
manuel: http://www.highscore.de/boost/gsoc2010/
téléchargement: http://www.highscore.de/boost/process.Zip
manual1: http://www.highscore.de/boost/process/
manual2: http://www.highscore.de/cpp/process/
Je pense que c'est la même chose que dans http://svn.boost.org/svn/boost/sandbox/process/boost/
télécharger: https://github.com/boost-vault/Process
téléchargement: http://www.netbsd.org/~jmmv/process.Zip
manuel: http://www.netbsd.org/~jmmv/process/
Il existe d'autres versions qui ressemblent à des branches: https://github.com/JeffFlinn/boost-process et https://github.com/boost-vault/Process .
Pour un historique partiel du projet, regardez http://www.highscore.de/cpp/process/#introduction
Depuis le 18 août 2012, une version plus récente de Boost.Process (v0.5) a été publiée sur http://www.highscore.de/boost/process0.5/
espérons que cela aide, Philipp
Boost Process a été l'un des projets Google Summer of Code cette année. Le site Web GSOC 2010 Boost Process est http://www.highscore.de/boost/gsoc2010/ .
La bibliothèque n'est toujours pas officielle, mais ses développeurs estiment qu'elle est suffisamment stable pour demander une révision formelle .
Une autre option pourrait être la conception modulaire POCO , voir Process::launch()
qui a une surcharge qui prend Pipes for in , out and erreur .
Il semble que Boost.Process se trouve dans la zone du bac à sable , ce qui suggère qu'il a été proposé pour inclusion et qu'il est probablement encore en cours d'élaboration, mais n'a pas été jugé stable, documenté et/ou utile assez pour être inclus dans la version boost principale.
Pour juillet 2015, il semble que Boost.Process
a été prév pour la révision formelle de Boost.
Des parties de Boost.Process sont désormais disponibles dans plusieurs bibliothèques autonomes de Boost: Boost.Interprocess, Options du programme, etc.
Le nouveau processus Boost est désormais en version bêta et sera disponible dans Boost 1.64.0.
http://www.boost.org/doc/libs/1_64_0_b2/doc/html/process.html