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