muszę napisać kod, któryJava. Proces prowadzona przez Runtime.getRuntime() Zabij exec()
- przebiegu procesu UNIX z
Runtime.getRuntime().exec("java -jar MyServerRunner -port MYPORT");
- znaleźć PID procesu poprzez wykonanie polecenia z Java Kod
lsof -t -i: MYPORT
- i zabić przez PID
kill -9 PID
(również przez polecenie z kodu java wykonanie) - a następnie wykonanie innych poleceń
ALE
gdybym wykonać tego polecenia przez Runtime.getRuntime().exec()
mój program kończy pracę z kodem wyjścia 137 - oznacza to, że gdy uruchamiam Runtime.getRuntime().exec("kill -9 PID")
zabiję proces My java programowo, ale nie program, że biegnę z kodu.
Jak mogę zabić TYLKO proces, który uruchamiam z kodu?
P.S. może powinienem użyć ProcessBuilder?
Jeśli używasz 'Runtime.getRuntime()' do uruchomienia innego procesu Java, to robisz coś nie tak. Dlaczego nie możesz po prostu uruchomić klasy w "wątku"? –
1. A jeśli zabijasz procesy z '-9', robisz też coś złego. Jeśli proces ma port, powinien również mieć komendę zamknięcia, którą można wysłać do tego portu. 'kill -9' jest ostatnią deską ratunku dla administratora, który wie, co robi (i loguje go). Nie należy go wbudowywać w aplikacje. 2. Fakt, że rozpoczęty proces Java wychodzi z '137' nie ma nic wspólnego z faktem, że zabijasz niewłaściwy proces. – EJP