KILL(2) | Manual del Programador de Linux | KILL(2) |
kill - enviar una señal a un proceso
#include <sys/types.h>
#include <signal.h> int kill(pid_t pid, int sig);
La llamada kill se puede usar para enviar cualquier señal a un proceso o grupo de procesos.
Si pid es positivo, entonces la señal sig es enviada a pid. En este caso, se devuelve 0 si hay éxito, o un valor negativo si hay error.
Si pid es 0, entonces sig se envía a cada proceso en el grupo de procesos del proceso actual.
Si pid es igual a -1, entonces se envía sig a cada proceso, excepto al proceso 1 (init), vea más abajo.
Si pid es menor que -1, entonces se envía sig a cada proceso en el grupo de procesos -pid.
Si sig es 0, entonces no se envía ninguna señal pero todavía se realiza la comprobación de errores.
Si hay éxito, se devuelve cero. Si hay error, se devuelve -1, y se actualiza errno apropiadamente.
Es imposible enviar una señal a la tarea número uno, el proceso init, para el que no ha sido instalado un manejador de señales. Esto se hace para asegurarse de que el sistema no se venga abajo accidentalmente.
POSIX 1003.1-2001 requiere que la llamada kill(-1,sig) envíe sig a todos los procesos a los que el proceso actual puede mandar señales, excepto posiblemente a algunos procesos del sistema definidos por la implementación. Linux permite a un proceso enviarse una señal a sí mismo, pero en Linux la llamada kill(-1,sig) no envía ninguna señal al proceso actual.
A lo largo de diferentes versiones del núcleo, Linux ha aplicado diferentes reglas en torno a los permisos requeridos por un proceso no privilegiado para enviar señales a otro proceso. En las versiones del núcleo 1.0 a la 1.2.2, se podía enviar una señal si el identificador de usuario efectivo del remitente coincidía con el del receptor, o el identificador de usuario real del remitente coincidía con el del receptor. Desde la versión 1.2.3 a la 1.3.77, una señal podía ser emitida si el identificador de usuario efectivo del remitente coincidía con el identificador de usuario real o efectivo del receptor. Las reglas actuales, que son conformes con POSIX 1003.1-2001, fueron adoptadas en la versión 1.3.78 del núcleo.
SVr4, SVID, POSIX.1, X/OPEN, BSD 4.3, POSIX 1003.1-2001
_exit(2), killpg(2), signal(2), tkill(2), exit(3), signal(7)
18 Diciembre 2001 | Linux 2.5.0 |