kill ou killpg Subroutine
Propósito
Envia um sinal para um processo ou para um grupo de processos.
Biblioteca
Biblioteca C Padrão (libc.a)
Sintaxe
#include <sys/types.h>
#include <signal.h>
int kill( Process, Signal )
pid_t Process;
int Signal;
killpg( ProcessGroup, Signal )
int ProcessGroup, Signal;Descrição
O subroutine matar envia o sinal especificado pelo parâmetro Sinal para o processo ou grupo de processos especificados pelo parâmetro Processo .
Para enviar um sinal para outro processo, ou o real ou o efetivo ID do usuário do processo de envio deve corresponder ao real ou efetivo ID do usuário do processo de recebimento, e o processo de chamada deve ter autoridade de usuário root.
Os processos que possuem os IDs de processo de 0 e 1 são processos especiais e são, às vezes, referidos aqui como proc0 e proc1, respectivamente.
Os processos podem enviar sinais para si mesmos.
A interface a seguir é fornecida para Compatibilidade BSD:
killpg(ProcessGroup, Signal)
int ProcessGroup; Signal;Esta interface é equivalente a:
if (ProcessGroup < 0)
{
errno = ESRCH;
return (-1);
}
return (kill(-ProcessGroup, Signal));Parâmetros
| Item | Descrição |
|---|---|
| Processo | Especifica o ID de um processo ou grupo de processos. Se o parâmetro Processo for maior que 0, o sinal especificado pelo parâmetro Sinal será enviado para o processo identificado pelo parâmetro Processo . Se o parâmetro Processo for 0, o sinal especificado pelo parâmetro Sinal será enviado para todos os processos, excluindo proc0 e proc1, cujo ID do grupo de processos corresponde ao ID do grupo de processo do remetente. Se o valor do parâmetro Process for um valor negativo diferente de -1 e se o processo de chamada passar nas verificações de acesso para o processo a ser sinalizado, o sinal especificado pelo parâmetro Signal será enviado a todos os processos, excluindo proc0 e proc1. Se o ID do usuário do processo de chamada tiver autoridade de usuário raiz, todos os processos, exceto proc0 e proc1, serão sinalizados. Se o valor do parâmetro Process (Processo ) for um valor negativo diferente de -1, o sinal especificado pelo parâmetro Signal (Sinal ) será enviado a todos os processos com uma ID de grupo de processos igual ao valor absoluto do parâmetro Process (Processo ). Se o valor do parâmetro Process for -1, o sinal especificado pelo parâmetro Signal será enviado a todos os processos para os quais o processo tem permissão para enviar esse sinal. |
| sinal | Especifica o sinal. Se o parâmetro Signal for um valor nulo, a verificação de erro será realizada mas nenhum sinal é enviado. Este parâmetro é usado para verificar a validade do parâmetro Processo . |
| ProcessGroup | Especifica o grupo de processos. |
Valores De Retorno
Após a conclusão bem-sucedida, a subroutine matar retorna um valor de 0. Caso contrário, um valor de -1 é retornado e a variável global errno é definida para indicar o erro.
Códigos De Erro
A subroutine matar não é bem-sucedida e nenhum sinal é enviado se um ou mais dos seguintes forem verdadeiros:
| Item | Descrição |
|---|---|
| EINVAL | O parâmetro Sinal não é um número de sinal válido. |
| EINVAL | O parâmetro Sinal especifica o sinal SIGKILL, SIGSTOP, SIGTSTPou SIGCONT , e o parâmetro Processo é 1 (proc1). |
| ESRCH | Nenhum processo pode ser encontrado correspondente ao especificado pelo parâmetro Processo . |
| EPERM | O ID do usuário real ou efetivo não corresponde ao usuário real ou efetivo ID do processo de recebimento, ou então o processo de chamada não possui autoridade de usuário root. |