“Kill a process tree” on windows using Java

前端 未结 3 1064
闹比i
闹比i 2021-01-13 07:12

I have a Java webstart process that is part of a windows batch script. I\'m using the javaws command in a batch script in this case. This match script ( start.bat) is invoke

相关标签:
3条回答
  • 2021-01-13 07:34

    Unfortunately, as you've discovered, there isn't a pure Java way of doing this. You'll have to resort to native commands or JNI libraries, all of which are platform-dependent and more complex than a pure Java solution would be.

    It may be worth upvoting the relevant bug in the Java bug database: http://bugs.sun.com/view_bug.do?bug_id=4770092

    With luck we can persuade the Java developers that the poor handling of subprocesses is worth fixing for Java 8.

    0 讨论(0)
  • 2021-01-13 07:34

    As far as I know, there's no such option in commons-exec. It's not even possible to obtain the PID of whatever process you just started. You could trap the kill signal within your bash script, and have the handler kill the subprocess(es) when the script process is killed.

    0 讨论(0)
  • 2021-01-13 07:44

    Finally got something workable even though its a roundabout way.

    Apache Commons Exec API contains the CommandLauncher class that returns a java.lang.Process object. Thanks to the link

    Here the link to get the windows Process Id from a java.lang.Process. This uses the JNA libraries.

    Finally with the Process Id, here the command string that kills the process tree //String killCmd = "taskkill /F /T /PID " + JNAHandler.getPid(process);

    0 讨论(0)
提交回复
热议问题