問題タブ [boost-process]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1098 参照

c++ - boost::process から boost::child への信号伝播

boost::processLinux のマスター アプリケーションで v. 1.65.1 を使用して、いくつかのオブジェクトを作成し、パイプ 経由でboost::process::child交換されるデータを管理しています。boost::process::std_inboost::process::std_out

マスター アプリケーションがコンソールから送信された CTRL-C を受信すると、子アプリケーションも CTRL-C シグナルを受信することがわかります。

子供を終了するには、パイプ経由でクリアコマンドを送信したいのですが、これを行うと、信号はすでに伝播されています。実際には、コマンドを見てシグナルを見ない子もいます。

  1. この信号伝搬は正常な動作ですか?
  2. これが起こらないようにするにはどうすればよいのでしょうか?
0 投票する
0 に答える
612 参照

zombie-process - boost::process::spawn がゾンビを置き去りにするのはなぜですか?

コードから外部ユーティリティ ( advzip) を呼び出して、書き込まれたデータに対して非同期再圧縮を実行しています。私はそれをするために使用boost::process::spawnします:

ただし、これらのサブプロセスは、作業が完了した後もゾンビ状態のままboost::process::spawnです。私は何か間違ったことをしていますか?

Ubuntu 18.04 で動作するブースト 1.65 を使用しています。

htop スクリーンショット

0 投票する
1 に答える
1793 参照

c++ - ブースト プロセスを使用してシェル コマンドの stdout を取得する

シェル コマンドを実行して終了コードを返す関数を C++ で実装しようとしていstdoutますstderr.Boost process library

上記のブーストのウェブサイトのでは、while ループで条件 c.running() がチェックされます。while ループに到達する前にプロセスの実行が終了した場合はどうなるでしょうか。その場合、子プロセスの標準出力をデータに保存できません。Boostのドキュメントには、次のことも記載 されています

[警告] 警告 nm 終了後に読み込もうとするとパイプがデッドロックします

したがって、 c.running() のチェックは while ループにあるはずです。

プログラムが while ループに到達する前に実行を終了したプロセスから stdout (および stderr) を取得するにはどうすればよいですか?