問題タブ [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.
c++ - boost::process から boost::child への信号伝播
boost::process
Linux のマスター アプリケーションで v. 1.65.1 を使用して、いくつかのオブジェクトを作成し、パイプ 経由でboost::process::child
交換されるデータを管理しています。boost::process::std_in
boost::process::std_out
マスター アプリケーションがコンソールから送信された CTRL-C を受信すると、子アプリケーションも CTRL-C シグナルを受信することがわかります。
子供を終了するには、パイプ経由でクリアコマンドを送信したいのですが、これを行うと、信号はすでに伝播されています。実際には、コマンドを見てシグナルを見ない子もいます。
- この信号伝搬は正常な動作ですか?
- これが起こらないようにするにはどうすればよいのでしょうか?
zombie-process - boost::process::spawn がゾンビを置き去りにするのはなぜですか?
コードから外部ユーティリティ ( advzip
) を呼び出して、書き込まれたデータに対して非同期再圧縮を実行しています。私はそれをするために使用boost::process::spawn
します:
ただし、これらのサブプロセスは、作業が完了した後もゾンビ状態のままboost::process::spawn
です。私は何か間違ったことをしていますか?
Ubuntu 18.04 で動作するブースト 1.65 を使用しています。
c++ - ブースト プロセスを使用してシェル コマンドの stdout を取得する
シェル コマンドを実行して終了コードを返す関数を C++ で実装しようとしていstdout
ますstderr.
。Boost process library
上記のブーストのウェブサイトの例では、while ループで条件 c.running() がチェックされます。while ループに到達する前にプロセスの実行が終了した場合はどうなるでしょうか。その場合、子プロセスの標準出力をデータに保存できません。Boostのドキュメントには、次のことも記載 されています
[警告] 警告 nm 終了後に読み込もうとするとパイプがデッドロックします
したがって、 c.running() のチェックは while ループにあるはずです。
プログラムが while ループに到達する前に実行を終了したプロセスから stdout (および stderr) を取得するにはどうすればよいですか?