2012-08-14 9 views
5

私はちょうど興味があります。 killのマニュアルページでは、QUIT(別名信号#3)が「コア」信号であることを示しています。 Javaプロセスではスレッド情報をダンプしているようです。ですから、QUITは誤った名前ですか? JVMがスレッドをダンプするsingal 3ハンドラを実装しているだけですか?「kill -QUIT process_id」はどのように機能しますか?

+0

ええ、QUITは誤った名前です。 @ウィル氏は、Sunはシグナル3をスレッドに投げ捨てることにした。 – Gray

答えて

7

QUITはとなります。おそらくはJavaの誤字です。しかし、その引数によってシグナル名は、シグナルハンドラのデフォルト動作を変更することが許可されている場合、誤った名前になります。

実際には、UNIXの信号名と実際に何が行われているかは、常にあいまいで淡いものでした。しかし、開発者はこの「問題」を30年以上も問題なく扱ってきました。

はい、Javaスレッドスタックダンプの動作はJVMによって実装されています。 UNIX/LINUXのデフォルトの動作は、他の要因によって禁止されていない限り、プロセスのメモリダンプを作成することです。

5

ただし、JVMはスレッドをダンプするために#3信号をキャプチャします。デフォルトでは、通常のunixプロセスの場合、コアをダンプ(すなわち、プロセスのメモリスナップショットを取ってファイルに書き込む)して終了します。

Javaの場合はそれほど役に立ちませんので、代わりにスレッドダンプを行います。

関連する問題