0

タブ付きの方法で複数のコンソール セッション (cmd.exe になるウィンドウ) を開くことができるアプリをコーディングしようとしています。

私が見つけた最も重要な参照の 1 つは、次の URL にあり、TextAreaOutputStream コードを取得して、プロセスから STDOUT を読み取ることができましたが、これとインターネット上のほとんどの参照は解決/修正されません。私が扱っている問題。

参考: GUI パネル内に Java コンソールを作成する

STDOUT、STDERR、および STDIN をリダイレクトすることで問題が発生した場合でも、タブの 1 つで Java コンソール内に入力したコマンドが子プロセスを作成するコマンドを実行するときに、最悪の部分が発生します。これは、私の Java アプリケーションが制御を失ったときです。新しいプロセスがバックグラウンドで作成されました。基本的に、新しい子プロセスは範囲外であり、バイトを送受信できず、アプリがハングします。

  • JVM
    • MyTabbedConsoleApp
      • cmd.exe /k (私はまだこれと通信できます。ここまでは問題ありません)
        • apptrack.exe (子プロセスがアプリの範囲外で、これと通信できず、アプリがハングします)

コンソール環境をほぼ模倣したアプリを作成するためのより良い方法を探しています。

4

1 に答える 1

0

オペレーティング システム プロセスを処理するために推奨される API であるため、ProcessBuilder代わりに を使用する必要があります。Runtime

Java 6u45 リリース ノートの「Runtime.exec への変更」トピックを確認してください。

JDK 5.0 以降、オペレーティング システム プロセスを作成する推奨される方法は、java.lang.ProcessBuilder を使用することです。ProcessBuilder クラスには、環境の設定、作業ディレクトリ、およびプロセスのストリームのリダイレクトのためのより完全な API があります。

于 2015-01-30T23:33:06.373 に答える