Subrutina kill o killpg
Finalidad
Envía una señal a un proceso o a un grupo de procesos.
Biblioteca
Biblioteca C estándar (libc.a)
Sintaxis
#include <sys/types.h>
#include <signal.h>
Descripción
La subrutina kill envía la señal especificada por el parámetro Señal al proceso o grupo de procesos especificado por el parámetro Proceso .
Para enviar una señal a otro proceso, el ID de usuario real o efectivo del proceso de envío debe coincidir con el ID de usuario real o efectivo del proceso de recepción y el proceso de llamada debe tener autorización de usuario root.
Los procesos que tienen los ID de proceso de 0 y 1 son procesos especiales y a veces se conocen aquí como proc0 y proc1, respectivamente.
Los procesos pueden enviar señales a sí mismos.
Se proporciona la siguiente interfaz para la compatibilidad BSD:
killpg(ProcessGroup, Signal)
int ProcessGroup; Signal;Esta interfaz es equivalente a:
if (ProcessGroup < 0)
{
errno = ESRCH;
return (-1);
}
return (kill(-ProcessGroup, Signal));Parámetros
| Elemento | Descripción |
|---|---|
| Proceso | Especifica el ID de un proceso o grupo de procesos. Si el parámetro Proceso es mayor que 0, la señal especificada por el parámetro Señal se envía al proceso identificado por el parámetro Proceso . Si el parámetro Proceso es 0, la señal especificada por el parámetro Señal se envía a todos los procesos, excluyendo proc0 y proc1, cuyo ID de grupo de procesos coincide con el ID de grupo de procesos del remitente. Si el valor del parámetro Process es un valor negativo distinto de -1 y si el proceso llamante pasa las comprobaciones de acceso para el proceso a señalar, la señal especificada por el parámetro Signal se envía a todos los procesos, excluyendo proc0 y proc1. Si el ID de usuario del proceso que llama tiene autoridad de usuario root, todos los procesos, excluyendo proc0 y proc1, son señalados. Si el valor del parámetro Proceso es un valor negativo distinto de -1, la señal especificada por el parámetro Señal se envía a todos los procesos que tengan un ID de grupo de procesos igual al valor absoluto del parámetro Proceso. Si el valor del parámetro Proceso es -1, la señal especificada por el parámetro Señal se envía a todos los procesos que el proceso tiene permiso para enviar esa señal. |
| Señal | Especifica la señal. Si el parámetro Signal es un valor nulo, se realiza la comprobación de errores pero no se envía ninguna señal. Este parámetro se utiliza para comprobar la validez del parámetro Proceso . |
| ProcessGroup | Especifica el grupo de procesos. |
Valores de retorno
Tras la finalización satisfactoria, la subrutina kill devuelve un valor de 0. En caso contrario, se devuelve un valor de -1 y se establece la variable global errno para indicar el error.
Códigos de error
La subrutina kill no se realiza correctamente y no se envía ninguna señal si se cumple una o varias de las siguientes condiciones:
| Elemento | Descripción |
|---|---|
| EINVAL | El parámetro Señal no es un número de señal válido. |
| EINVAL | El parámetro Señal especifica la señal SIGKILL, SIGSTOP, SIGTSTPo SIGCONT y el parámetro Proceso es 1 (proc1). |
| ESRCH | No se puede encontrar ningún proceso correspondiente al especificado por el parámetro Proceso . |
| EPERM | El ID de usuario real o efectivo no coincide con el ID de usuario real o efectivo del proceso de recepción, o bien el proceso de llamada no tiene autorización de usuario root. |