I need to write a code,that
- run unix process with
Runtime.getRuntime().exec("java -jar MyServerRunner -port MYPORT");
- find PID of the process by executing command from java code
lsof -t -i: MYPORT
- and kill him by pid
kill -9 PID
( also by executing command from java code) - and then execute others commands
BUT
if I execute this command by Runtime.getRuntime().exec()
my program exits with exit code 137 – this means that when I run Runtime.getRuntime().exec("kill -9 PID")
I kill process of My java programm, but not the program, that I run from code.
How can I kill ONLY the process that I run from code ?
P.S. maybe I should use ProcessBuilder ?
Best Answer
You can kill a sub-process that you have launched from your java application with
destroy
:Also note that it might make sense to run that other code in a separate thread rather than in a separate process.