57

プログラムを実行し、その stdout 出力を C++ で取得する必要があります。私のコードもクロスプラットフォームにしたいです。

最近、すべてのクロス プラットフォームのニーズに対応する Boost C++ ライブラリの素晴らしい世界を発見したので、boost.org にアクセスして Boost.Process のドキュメントを読んでみようと思いました。驚いたことに、そこにはありませんでした。次に、Boost が外部プロセスを開始するためにクロスプラットフォーム ライブラリに付けた名前を調べましたが、これまでのところ見つけることができませんでした。

Google で検索すると、Julio M. Merino Vidal のBoost.Processにたどり着きました。これは、私が探していた非公式の Boost ライブラリのようです。奇妙なことに、その Web サイトにダウンロード リンクが見つからないようです。また、プロジェクトに関する最近の進展はないようです。

ようやく Vidal の Boost.Process のダウンロード リンクを外部サイトで見つけることができたので、今はそれを使用しますが、クロス プラットフォームの C++ ライブラリを手に入れるために費やした労力にはかなり驚かされます。外部プロセスと対話します。

では、なぜ公式の Boost.Process がないのでしょうか? とても貴重な追加になりそうです。それとも、ここで明らかな解決策を完全に見落としていますか? 外部プロセスの簡単な開始と相互作用を管理するための他のクロスプラットフォーム ライブラリを提案していただけないでしょうか?

4

9 に答える 9

62

Boost.Process は、2016 年 11 月 9 日に Boost に含めることが承認されました。Boost.Process公式の Boost ライブラリになりました。

ドキュメントはここにあります: http://www.boost.org/doc/libs/1_64_0/doc/html/process.html


記録として、2016 年 10 月 27 日から 2016 年 11 月 5 日までにレビューされたソースは、GitHub で入手できます。

ダウンロード: https://github.com/klemens-morgenstern/boost-process

マニュアル: http://klemens-morgenstern.github.io/process/index.html


このライブラリのいくつかの古いバージョンを Web で見つけることができます。それらは多かれ少なかれ互換性がありません:

  • バージョン 0.5 (最新、2012 年 12 月 3 日現在)

ダウンロード: http://www.highscore.de/boost/process0.5/process.zip

マニュアル: http://www.highscore.de/boost/process0.5/index.html

  • バージョン GSOC2010

ダウンロード: http://www.highscore.de/boost/gsoc2010/process.zip

マニュアル: http://www.highscore.de/boost/gsoc2010/

  • バージョン 0.31

ダウンロード: http://www.highscore.de/boost/process.zip

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

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

http://svn.boost.org/svn/boost/sandbox/process/boost/と同じだと思います

  • IS バージョン 0.1-0.4

ダウンロード: https://github.com/boost-vault/Process

  • バージョン 0?

ダウンロード: http://www.netbsd.org/~jmmv/process.zip

マニュアル: http://www.netbsd.org/~jmmv/process/

ブランチのように見える他のバージョンがあります: https://github.com/JeffFlinn/boost-processおよびhttps://github.com/boost-vault/Process

プロジェクトの歴史の一部については、http: //www.highscore.de/cpp/process/#introduction をご覧ください。

于 2012-09-08T03:49:34.537 に答える
30

Julio M. Merino Vidal は、元の著者であると信じていますが、この 2007 年の投稿で、完成させる時間がなかったと書いています。

開発はボリス・シェーリングが引き継いだ。これは、 http://www.highscore.de/boost/process/で見つけたバージョンです。この投稿によると、彼はまだ積極的に開発中です。

Ilya Sokolovによる別のバージョンがあります。

あなたの他の質問について:

外部プロセスの簡単な開始と相互作用を管理するための他のクロスプラットフォーム ライブラリを提案していただけないでしょうか?

代替手段をリストしているこの wiki ページを見ることができます。

必要に応じて、popen() を使用することもできます。

于 2009-11-05T22:12:23.917 に答える
8

2012 年 8 月 18 日の時点で、Boost.Process (v0.5) の新しいバージョンがhttp://www.highscore.de/boost/process0.5/でリリースされました。

お役に立てば幸いです、フィリップ

于 2012-08-27T22:36:57.803 に答える
8

Boost Process は、今年の Google Summer of Code プロジェクトの 1 つです。GSOC 2010 Boost Process の Web サイトはhttp://www.highscore.de/boost/gsoc2010/です。

ライブラリはまだ非公式ですが、その開発者は正式なレビューを要求するのに十分安定していると感じています。

于 2010-11-26T01:57:36.067 に答える
4

もう 1 つのオプションは、モジュール設計されたPOCOである可能性があります。 inout、およびerrorにPipesを使用Process::launch()するオーバーロードがあるものを確認してください。

于 2009-11-05T23:01:09.510 に答える
3

Boost.Process はサンドボックス領域にあるようです。これは、含めることが提案されており、おそらくまだ作業中であることを示唆していますが、メインに含めるのに十分な安定性、文書化、および/または有用性は見られていません。ブーストリリース。

于 2009-11-05T21:53:35.577 に答える
2

2015 年 7 月には、Boost の正式なレビューが再び予定さBoost.Processれているようです。

于 2015-07-07T19:40:04.203 に答える
1

Boost.Process の一部は、現在、Boost のいくつかのスタンドアロン ライブラリで利用できます: Boost.Interprocess、Program Options など。

于 2009-11-05T21:52:53.383 に答える