2012-08-14 15 views
5

Solo tengo curiosidad. La página de manual para kill dice que QUIT, aka señal # 3, es una señal de "núcleo". Parece que todo lo que hace, para los procesos de Java, es volcar la información del hilo. Entonces, ¿el QUIT está mal nombrado? ¿Es solo que la JVM implementa un controlador singal 3 que descarga hilos?¿Cómo funciona "kill -QUIT process_id"?

+0

Sí, QUIT es un nombre inapropiado. Como dijo @Will, Sun simplemente decidió hacer que la señal 3 volcara los hilos. – Gray

Respuesta

7

QUIT es discutiblemente un nombre inapropiado para Java. Pero por ese argumento cualquier nombre de señal podría ser un nombre inapropiado si una aplicación puede cambiar el comportamiento predeterminado del manejador de la señal.

En realidad, la correspondencia entre los nombres de las señales de UNIX y lo que realmente hacen siempre ha sido un tanto vaga y tenue. Sin embargo, los desarrolladores han estado lidiando con este "problema" durante más de 30 años sin que sea un problema real.

Y sí, el comportamiento de volcado de la pila de subprocesos de Java es implementado por la JVM. El comportamiento predeterminado de UNIX/LINUX es crear un volcado de memoria del proceso, a menos que esto sea inhibido por otros factores.

5

Sí, la JVM captura la señal # 3 para volcar hilos. De forma predeterminada, para un proceso de Unix normal, vuelca el núcleo (es decir, toma una instantánea de memoria del proceso y lo escribe en un archivo) y sale.

Para Java, eso no es muy útil, por lo que hace un volcado de subprocesos.

Cuestiones relacionadas