を殺していません-cプロセスではなく、子プロセスではありません。子供を殺す方法はありますか? pingは破壊後も継続して実行されます。Process.destroyは()私は次のことを実行しますので、もしProcessBuilderを使用、bashはリダイレクトをサポートしていませんプロセスの子供
この投稿によると、Java - Process.destroy() source code for Linuxは、最終的にネイティブのCコードレベルでkill downを呼び出します。
しかし、私は、Linuxでこれを行う場合でも、それは動作しません:
[[email protected]:~/tmp ]$ bash -c 'ping 127.0.0.1 > console.log' &
[1] 30914
[[email protected]:~/tmp ]$ ps
PID TTY TIME CMD
30536 pts/1 00:00:00 bash
30914 pts/1 00:00:00 bash
30915 pts/1 00:00:00 ping
30916 pts/1 00:00:00 ps
[[email protected]:~/tmp ]$ kill -9 30914
[[email protected]:~/tmp ]$ ps -ef | grep ping
john 30915 1 0 15:19 pts/1 00:00:00 ping 127.0.0.1
john 30919 30536 0 15:19 pts/1 00:00:00 grep ping
[1]+ Killed bash -c 'ping 127.0.0.1 > console.log'
[[email protected]:~/tmp ]$
pingがまだ実行されている。..