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 ProcessGroupSignal;

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.

Nota: Enviar um sinal não implica que a operação seja bem-sucedida. Todas as operações de sinal devem passar as verificações de acesso prescritas por cada política de controle de acesso forçado sobre o sistema.

A interface a seguir é fornecida para Compatibilidade BSD:

killpg(ProcessGroupSignal)
int ProcessGroupSignal;

Esta interface é equivalente a:

if (ProcessGroup < 0)
{
  errno = ESRCH;
  return (-1);
}
return (kill(-ProcessGroup, Signal));

Parâmetros

Tabela 1. 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:

Tabela 2.. Códigos de erro
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.