2010-03-18 3 views
2

Я использую Java Runtime для запуска команд, включая определенные команды CVS.
Я использую:
форматjava Процесс остановить все дерево процессов

process = runtime.exec ("cmd /C cvs..."); 

для запуска процесса в Java
Мне нужно, чтобы иметь возможность остановить его. Для этого я использую процесс Java уничтожить методу

process.destroy(); 


Однако только CMD остановлен не процесс резюме. Он продолжает работать как отдельный процесс без процесса cmd в качестве родителя.
Есть много ссылок на это в Интернете, но я не нашел удовлетворительного решения. Thanks

+0

Возможно, вы можете попробовать остановить процесс с помощью команды cvs, а не java-метода. Я хочу начать процесс: runtime.exec («cmd/C cvs start»); для остановки процесса runtime.exec («cmd/C cvs stop»); – Enrique

ответ

2

Это проблема с окнами cmd shell. Почему вы его используете? Вы не можете сделать exec("cvs ...")?

+0

Точно. Любая причина, по которой вы должны использовать cmd/C? –

+0

Спасибо за ответы. Я использую cmd/C, потому что иначе я не смогу запускать команды Windows из Java (например, dir и т. Д.). Однако то, что вы сказали, я пробовал для CVS, и он отлично работает! Так что это решение одной части моей проблемы. Но я попробовал его для другой программы gmake.exe, которая запускает другие процессы во время ее запуска, а когда я использую уничтожение, подпроцессы, которые она порождает, не останавливаются. Таким образом, проблема остановки дерева процессов остается. – ages04

0

Возможно, с помощью Runtime.exec можно получить PID процесса, который вы выполнили. И с этим вы можете закрыть дерево процессов.

Вам понадобится еще 2 программы для поиска PID и завершения процесса дерева.

Смежные вопросы