子プロセスがユーザー入力を待っているかどうかを調べようとしています (出力を解析せずに)。Unix の C で、パイプの読み取り側に現在 read() 呼び出しがブロックされているかどうかを判断することは可能ですか?
問題は、子プロセスで実行されるプログラムを制御できないことです。それらは、私が通常 /dev/null にリダイレクトしたいあらゆる種類の冗長なガベージを出力します。時折、ユーザーに何かを求めるプロンプトが表示されます。(プロンプトには信頼できる形式がありません。)したがって、私の考えは次のとおりです。
- ループ内:
- 子の stdout を排出し、一時バッファに追加します。
- 子がユーザー入力を求めているかどうかを確認します (方法はわかりません)。その場合、バッファーは標準出力に出力されます。
- 子が終了したら、バッファを破棄します。