Java の ProcessBuilder を使用して、Linux で「長期間」実行する必要があるアプリケーションを起動しようとしています。このプログラムの実行方法は、コマンドを起動し (この場合、メディア再生アプリケーションを起動しています)、実行を許可し、クラッシュしていないことを確認します。たとえば、PID がまだアクティブかどうかを確認し、プロセスが停止している場合はプロセスを再起動します。
私が今抱えている問題は、PID はシステム内で有効なままですが、アプリケーションの GUI がハングすることです。ProcessBuilder(cmd).start() を別のスレッドにシフトしようとしましたが、期待どおりに何も解決していないようです。
基本的に、結果として、ユーザーにはプログラムがクラッシュしたように見えますが、ProcessBuilder.start() プロセスを駆動する Java プロセスを強制終了すると、実際には、作成されたプロセスが通常の動作を再開できるようになります。これは、Java アプリケーション内の何かが生成されたプロセスに干渉していることを意味しますが、現時点では何が原因かまったくわかりません。(したがって、何も解決していないように見える別のスレッドに分けようとした理由)
誰かが意見や考えを持っている場合は、私に知らせてください。私は一生、この問題を解決する方法を考えることができません。
編集: プロセスから作成された I/O ストリームについて心配していないため、それに対処するための措置を講じていません。これにより、プロセス自体がハングする可能性がありますか?