¿Qué proceso se mata cuando hago `ctrl + c`?


2

Mi comprensión vaga e intuitiva es que Ctrl+ Cmata el proceso que se está ejecutando actualmente en la ventana seleccionada.

Sin embargo, me estoy confundiendo sobre la diferencia de qué proceso se anula cuando se llama a un ejecutable y cuando se usa un intérprete.

Interprete

Cuando uso un intérprete . Por ejemplo, si abro Ren la terminal, puedo ver un proceso que CMD(a pedido ps) es R. Sin embargo, cuando uso Ctrl+ C, el Rproceso no se mata, pero el proceso que se ejecuta Rse mata.

Ejecutable

Cuando llamo a un ejecutable, puedo ver un proceso que CMD(de guardia ps) es <nameOfExecutable>. Cuando hago Ctrl+ C, este proceso se anula.

Pregunta

Parece haber algún tipo de jerarquía de procesos (y puede haber una semántica correcta para referirse a él). ¿Qué hace Ctrl+ Cexactamente a la luz de esta aparente jerarquía de procesos?


Para su información, uso la Terminal 2.6.1 en Mac OS X 10.11.3


1
Respuesta relacionada: stackoverflow.com/a/6110213/1025421 // También tenga en cuenta que SIGINTno SIGKILLlo es , por lo que el proceso no se "mata".
Daniel B

Respuestas:


1

No estoy seguro, pero ctrl + cdebería enviar una SIGINTseñal al proceso en ejecución. Por lo general, los programas no tienen un controlador personalizado para esta señal y se toman medidas predeterminadas (el programa se elimina). Supongo que el intérprete intercepta esta señal y simplemente deja de ejecutar el script en ejecución.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.