Me sorprendió este comentario en otra pregunta:
Enviar dd la señal USR1 demasiado pronto después de que haya comenzado (es decir, en un script bash, la línea después de que la haya iniciado), de hecho, la terminará
¿Alguien puede explicar por qué ?
Me sorprendió este comentario en otra pregunta:
Enviar dd la señal USR1 demasiado pronto después de que haya comenzado (es decir, en un script bash, la línea después de que la haya iniciado), de hecho, la terminará
¿Alguien puede explicar por qué ?
{ dd if=/dev/zero of=/dev/null & }; kill -USR1 $!; jobs; sleep 1; jobspara reproducir el efecto que estás describiendo.Respuestas:
Cada señal tiene una "disposición predeterminada": lo que hace un proceso por defecto cuando recibe esa señal. Hay una tabla en la
signal(7)página del manual que los enumera:SIGUSR1ySIGUSR2ambos tienen la acción predeterminadaTerm: el proceso finaliza.ddregistra un controlador para interceptar la señal y hacer algo útil con ella, pero si señaliza demasiado rápido aún no ha tenido tiempo de registrar ese controlador, por lo que la acción predeterminada ocurre en su lugarfuente
stracesalida en un script de shell ...)