Java ProcessBuilder:结果进程挂起

11 浏览
0 Comments

Java ProcessBuilder:结果进程挂起

我一直在尝试使用Java的ProcessBuilder在Linux上启动一个长期运行的应用程序。这个程序的运行方式是启动一个命令(在这种情况下,我正在启动一个媒体播放应用程序),允许其运行,并检查确保它没有崩溃。例如,检查PID是否仍然活动,如果它已经死亡,则重新启动进程。

我目前遇到的问题是PID在系统中仍然活动,但应用程序的GUI却挂起了。我尝试将ProcessBuilder(cmd).start()移到一个单独的线程中,但这似乎没有解决任何问题,这是我希望的结果。

基本上,结果是对用户来说,程序似乎已经崩溃,但是杀死驱动ProcessBuilder.start()进程的Java进程实际上允许创建的进程恢复其正常行为。这意味着Java应用程序中的某些东西正在干扰生成的进程,但是我对此毫无头绪。(因此我尝试将其分离到另一个线程中,但似乎没有解决任何问题)

如果有人有任何想法,请让我知道,因为我无法想出如何解决这个问题。编辑:我对由进程创建的I/O流不关心,并且因此没有采取任何处理步骤-这可能导致进程本身挂起吗?

0