Это может быть дефект интерпретатора java, но java в HPUX не выполняет kill -9, а только kill -TERM.
Я сделал небольшой тест testDestroy.java:
ProcessBuilder pb = new ProcessBuilder(args);
Process process = pb.start();
Thread.sleep(1000);
process.destroy();
process.waitFor();
И вызов:
$ tusc -f -p -s signal,kill -e /opt/java1.5/bin/java testDestroy sh -c 'trap "echo TERM" TERM; sleep 10'
умирает через 10 с (не убивается через 1 с, как ожидалось) и показывает:
...
[19999] Received signal 15, SIGTERM, in waitpid(), [caught], no siginfo
[19998] kill(19999, SIGTERM) ............................................................................. = 0
...
Выполнение того же в Windows, кажется, нормально завершает процесс, даже если сигнал обрабатывается (но это может быть из-за того, что окна не используют сигналы для уничтожения).
На самом деле я обнаружил Java - исходный код Process.destroy () для Linux связанный поток и реализация openjava, похоже, также используют -TERM, что выглядит очень неправильно.