2009-11-05 15 views
53

Ho bisogno di eseguire un programma e recuperare il suo output stdout in C++. Mi piacerebbe che il mio codice fosse anche multipiattaforma.Dove si trova Boost.Process?

Recentemente ho scoperto il meraviglioso mondo delle librerie C++ Boost per tutte le vostre esigenze multipiattaforma, ho pensato di andare su boost.org e leggere la documentazione di Boost.Process. Con mia grande sorpresa, non c'era! Ho quindi proceduto a capire quale nome Boost ha dato alla propria libreria multipiattaforma per avviare processi esterni, ma non siamo riusciti a trovarlo finora.

Una ricerca su Google mi ha portato a Julio M. Merino Vidal's Boost.Process, che sembra essere la libreria Boost non ufficiale che stavo cercando. Stranamente, non riesco a trovare un link per il download su quel sito. Sembra anche che non ci siano stati sviluppi recenti riguardo al progetto.

Sono finalmente riuscito a trovare un collegamento di download per Boost.Process di Vidal su un external site e lo userò per ora, ma sono abbastanza sorpreso dallo sforzo che ho dovuto mettere per mettere le mani su una piattaforma multipla libreria C++ per interagire con processi esterni.

Quindi, perché non esiste Boost.Process ufficiale? Sembra che sarebbe un'aggiunta molto preziosa. O sto assolutamente trascurando l'ovvia soluzione qui? Potresti suggerire altre librerie multipiattaforma per gestire l'avvio e l'interazione semplici con i processi esterni?

+1

Congratulazioni per la scoperta - rocce spinta! – vehomzzz

+0

Boost rocks, ma non esiste ancora una libreria Process ufficiale. Per quello che vale, ho usato con successo la libreria Poco Process in passato (Google per le librerie Poco C++ per maggiori informazioni). – StackedCrooked

risposta

29

Julio M. Merino Vidal, che è, credo, l'autore originale, ha scritto in this 2007 post che non ha avuto il tempo di completarlo.

Lo sviluppo è stato rilevato da Boris Schaeling. Questa è la versione che hai trovato a http://www.highscore.de/boost/process/. Secondo questo post, lo sta ancora attivamente sviluppando.

C'è un'altra versione, da Ilya Sokolov.

Per la vostra altra domanda:

Potrebbe forse suggerire altre librerie multipiattaforma per la gestione semplice di partenza e dell'interazione con i processi esterni?

si può guardare a this wiki page alternative di quotazione.

A seconda delle esigenze, anche il popen() potrebbe eseguire il lavoro.

+7

Solo per completare le informazioni qui, collegherei il [programma di revisione] (http://www.boost.org/community/review_schedule.html) in cui si afferma che boost.process è stato [respinto] (http: // lists.boost.org/boost-announce/2011/03/0292.php). – dave

+3

Questa risposta non è più aggiornata, vedere la risposta wiki della comunità. – Klaim

1

Parti Boost.Process sono disponibili in diverse librerie autonome in Boost ora: Boost.Interprocess, Opzioni programma, ecc

3

Sembra Boost.Process è nella sandbox area, che suggerirebbe che è stato proposto per l'inclusione e probabilmente è ancora in fase di elaborazione, ma non è stato ritenuto stabile, documentato e/o abbastanza utile da essere incluso nella release di boost principale.

4

Un'altra opzione potrebbe essere l'modulare concepito POCO, vedere Process::launch() che ha un sovraccarico che prende Pipes per in, fuori e errore.

8

Boost Process è stato uno dei progetti di Google Summer of Code quest'anno. Il sito Web del processo Boost 2010 GSOC è http://www.highscore.de/boost/gsoc2010/.

La libreria è ancora non ufficiale, ma i suoi sviluppatori ritengono che sia sufficientemente stabile a request formal review.

+2

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

+2

È stato rifiutato a causa di vari dubbi, spero che si rivolgano a quelli e ripresentino. – maep

54

Boost.Process era accepted for inclusion into Boost on November 9, 2016; e has been included in the 1.64 rilasciato il 19 aprile 2017. Boost.Process è ora una libreria Boost ufficiale!

la documentazione è disponibile qui: http://www.boost.org/doc/libs/1_64_0/doc/html/process.html


Per la cronaca, le fonti che sono state esaminate dal 27 ottobre 2016 attraverso il 5 novembre 2016 sono disponibili su GitHub:

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

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


È possibile trovare sul Web diverse versioni precedenti di questa libreria. Sono tutti più o meno incompatibili:

  • Versione 0.5 (ultima, dal 3 dic 2012)

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

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

  • Versione GSOC2010

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

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

  • Versione 0,31

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

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

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

penso che sia lo stesso che nel http://svn.boost.org/svn/boost/sandbox/process/boost/

  • I.S. Versione 0.1-0.4

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

  • Versione 0?

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

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

Non ci sono altre versioni che sembrano rami: https://github.com/JeffFlinn/boost-process e https://github.com/boost-vault/Process.

Per una storia parziale del progetto, guarda http://www.highscore.de/cpp/process/#introduction

2

Per luglio 2015 sembra Boost.Process è stato scheduled per il Boost revisione formale di nuovo.