Я пытался использовать Java ProcessBuilder для запуска приложения в Linux, которое должно работать «на длительный срок». Способ запуска этой программы - запустить команду (в данном случае я запускаю приложение для воспроизведения мультимедиа), разрешить ее запуск и убедиться, что она не вылетела. Например, проверьте, активен ли PID, и перезапустите процесс, если он умер.
Проблема, которую я получаю прямо сейчас, заключается в том, что PID остается активным в системе, но графический интерфейс приложения зависает. Я попытался перенести ProcessBuilder (cmd) .start () в отдельный поток, но, похоже, это ничего не решает, как я и надеялся.
По сути, результатом этого является то, что для пользователя программа ЯВЛЯЕТСЯ сбойной, но уничтожение процесса Java, который управляет процессом ProcessBuilder.start (), фактически позволяет созданному процессу возобновить свое нормальное поведение. Это означает, что что-то в приложении Java вмешивается в порожденный процесс, но я абсолютно не знаю, что на данный момент. (Поэтому я попытался разделить его на другой поток, который, похоже, ничего не решал)
Если у кого-то есть какие-либо замечания / мысли, пожалуйста, дайте мне знать, поскольку я не могу думать о том, как решить эту проблему.
Редактировать: Я не беспокоюсь о потоке ввода-вывода, созданном из Процесса, и поэтому не предпринял никаких шагов для решения этой проблемы - может ли это вызвать зависание в самом Процессе?