Es könnte ein Java-Interpreter-Defekt sein, aber Java unter HPUX führt keinen Kill -9 aus, sondern nur einen Kill -TERM.
Ich habe einen kleinen Test gemacht testDestroy.java:
ProcessBuilder pb = new ProcessBuilder(args);
Process process = pb.start();
Thread.sleep(1000);
process.destroy();
process.waitFor();
Und die Anrufung:
$ tusc -f -p -s signal,kill -e /opt/java1.5/bin/java testDestroy sh -c 'trap "echo TERM" TERM; sleep 10'
stirbt nach 10s (nicht wie erwartet nach 1s getötet) und zeigt:
...
[19999] Received signal 15, SIGTERM, in waitpid(), [caught], no siginfo
[19998] kill(19999, SIGTERM) ............................................................................. = 0
...
Dasselbe unter Windows zu tun, scheint den Prozess auch dann zu beenden, wenn das Signal verarbeitet wird (dies kann jedoch daran liegen, dass Windows keine Signale zum Zerstören verwendet).
Eigentlich fand ich Java - Process.destroy () Quellcode für Linux- bezogene Thread- und Openjava-Implementierung scheint auch -TERM zu verwenden, was sehr falsch zu sein scheint.