Я предполагаю, что ваша серверная программа пытается записать в стандартный вывод или, возможно, в стандартную ошибку (System.out
/ System.err
в терминах Java), которая неявно унаследована от вашей программы Java, но которая превращается в тыкву, когда ваша программа Javaуходит.
Простое решение может быть для вашей Java-программы exec
сценарий оболочки, который запускает ваш сервер в качестве фонового процесса (с использованием START
(Windows) или &
(Unix)) сявно перенаправленные потоки ввода / вывода.
Библиотека Java недавно получила несколько хороших обновлений класса Process
(я думаю), которые позволяют вам много работать с потоками, но я неу меня большой опыт, поэтому я не могу предложить подробное предложение.
РЕДАКТИРОВАТЬ: мое предложение из среднего абзаца.Не тестировал, извините!
Файл server-runner.sh
:
#!/bin/bash
/path/mmserver >/dev/null &
Вам, конечно, потребуется chmod +x server-runner.sh
.
Затем из вашей программы Java выexec
скрипт server-runner.sh
вместо вашего mmserver
.
Если вы хотите убить mmserver, вам нужно будет найти его в ps -ux
и использовать kill
в номере процесса.