質問

getOutputStreamを使用したプロセスとのやり取りに問題があります。これが私のコードです: ジェネラコディセタグプレ

出力は次のとおりです: ジェネラコディセタグプレ

this.shは単に「gksudoapt-getinstallfirefox」を実行します

なぜそれが中止され、入力「Y」を受け取らないのかわかりません。

役に立ちましたか?

解決

いくつかの問題があります。

最初gksudo(1)は、開始するコマンドの標準入力と標準出力を使用して、いくつかの汚い、非標準のトリックを実行します。それはひどく失敗します。良い例は次のコマンドラインです: ジェネラコディセタグプレ

catがデータを配信するとすぐに、echoの出力と終了が予想されます。いいえ。 gksudocatの両方が永遠にぶら下がっています。出力なし。

ユースケースは ジェネラコディセタグプレ

これも機能しません。これが解決されない限り、起動したプログラムでユーザー入力が必要な場合は、リモートコントロールを忘れることができます。

2番目:Rogerがすでに指摘しているように、waitFor()はコマンドの終了を待ちます。これは、ユーザー入力がなく、gksudoの問題があるとすぐには起こりません。

3番目 waitForを少し押し込んだ後、次のブロッカーがあります。EOFまでのプロセスの完了出力を待ちます。これはすぐには起こりません(「最初」と「2番目」を参照)。

4番目プロセスがすでに2回停止した後(「2番目」と「3番目」を参照)にのみ、何らかの入力が得られる可能性があります。 >>


この一連の問題を解決する代わりに、より良い、はるかに簡単な方法があるかもしれません。標準入力でYを制御しようとしないでください。質問に自動的に「答える」適切なオプションをいくつか与えるだけです。簡単な\nは、いくつかの候補を見つけます: ジェネラコディセタグプレ

詳細はマニュアルをご覧ください。

これがより良い、より安定した方法だと思います。

PS:今、私はpi *** o *** apt-get installですので、上記の暴言を許してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top