Мне нужно иметь возможность запускать и останавливать внешнюю программу изнутри java. Я начинаю работать отлично, но когда я его останавливаю, он убивает своего родителя. Оказывается, что процесс, который я запускаю, убивает всю свою группу процессов с помощью kill 0. Кто-нибудь знает, как сделать так, чтобы мой java-процесс не был в группе процессов дочерней программы?Измените группы процессов на Runtime.getRuntime(). Процессы exec
2
A
ответ
2
Так что я думаю, есть два ответа:
1) Создать свой дочерний процесс в качестве лидера группы новой группы процессов. В Linux я могу сделать это в командной строке с помощью
bash -c "command <args>"
Затем вы можете проверить, что процесс группы нового процесса отличается от терминала вы запускали команду в командой:
ps -efj
Параметр «j» показывает идентификатор группы процессов (PGID).
Я предупреждаю вас, что вам, возможно, придется избегать вещей, из-за которых он корректно работает с Java, потому что кавычки необходимы для команд с аргументами, которые передаются команде «bash» с опцией «-c». Таким образом, в Java я бы предположил, что это будет выглядеть примерно так:
Process processWithNewProcessGroup = Runtime.getRuntime().
exec("bash -c \"sleep 60\"");
2) Измените дочерний процесс, так что не убивает все, что в его группе процессов.
Смежные вопросы
- 1. Ошибка на Runtime.getRuntime() EXEC
- 2. Runtime.getRuntime(). Exec (__);
- 3. Runtime.getRuntime() Exec()
- 4. Java Runtime.getRuntime(). Exec() alternatives
- 5. Runtime.getRuntime(). Exec странное поведение
- 6. Runtime.getRuntime(). Exec() работает некорректно
- 7. Runtime.getRuntime(). Exec (...) вызывает тупик
- 8. Java Runtime.getRuntime(). Exec() с кавычками
- 9. Runtime.getRuntime() тест Exec JUnit
- 10. Runtime.getRuntime() Exec() вопрос
- 11. java Runtime.getRunTime(). Exec & wildcards?
- 12. Runtime.getRuntime(). Exec() не работает
- 13. Runtime.getRuntime(). Exec() в циклах
- 14. Java Runtime.getRuntime(). Exec
- 15. Runtime.getRuntime(). Exec Hangs
- 16. Runtime.getRuntime(). Exec (cmd) hanging
- 17. Java:. Убить процесс запущенного на Runtime.getRuntime() Exec()
- 18. Runtime.getRuntime(). Exec на хосте изнутри процесса Docker
- 19. Java - Runtime.getRuntime(). Exec() Что происходит?
- 20. Runtime.getRuntime(). Exec - Выполнение запроса osql
- 21. Как использовать Runtime.getRuntime(). Exec ("cmd")
- 22. Android Runtime.getRuntime(). Exec и rsync
- 23. Runtime.getRuntime(). Exec() не запускает процесс
- 24. IOException при использовании Runtime.getRuntime(). Exec() для exec "stat" на Android?
- 25. Runtime.getRuntime(). Exec(), выполняющий Java-класс
- 26. Runtime.getRuntime(). Exec() выполняет две строки?
- 27. Runtime.getRuntime() возвращает Exec пустой строке
- 28. Runtime.getRuntime(). Exec(), скрыть экран консоли
- 29. Runtime.getRuntime(). Exec() не выполняет некоторые команды
- 30. Отдельное дерево процессов с exec
сделать его демоном. –
@Murali VP: если это ответ, ответьте как ответ. – EJP