Onde encontrar a informação completa sobre um sinal?

3

Eu quero saber todas as informações sobre o sinal SIGTTIN , por exemplo, eu quero saber se o sinal SIGTTIN pode ser manipulado ou não.

Esta documentação diz apenas o seguinte sobre o sinal SIGTTIN :

SIGTTIN 21,21,26 Stop Terminal input for background process

E digitar man SIGTTIN no terminal não retornou nada.

Editar:

O que eu quis dizer não foi quais sinais você pode enviar para um processo, mas sim se o processo que recebe o sinal pode mudar a ação padrão do sinal. Por exemplo: a ação padrão para o sinal SIGTTIN é parar o processo, você pode alterar essa ação padrão em seu programa usando a função sigaction() . Agora, alguns sinais não permitem que você altere suas ações padrão, e é isso que estou procurando (uma documentação de quais sinais não permitem que você altere suas ações padrão).

    
por user262329 23.11.2017 / 12:45

2 respostas

0

Você pode usar este comando, que geralmente está correto.

kill -l | egrep SIGTTIN

Você também pode escrever um rápido script PERL para capturar o SIGTTIN + e depois executá-lo em segundo plano + enviar uma mensagem de diagnóstico simples se o seu manipulador SIGTTIN for executado.

    
por 23.11.2017 / 13:15
0

Eu não acho que você pode alterar a ação padrão de um sinal, mais do que ignorar completamente o sinal ou instalar um manipulador de sinal. sigaction(2) diz:

sa_handler specifies the action to be associated with signum and may be SIG_DFL for the default action, SIG_IGN to ignore this signal, or a pointer to a signal handling function. This function receives the signal number as its only argument.

Se você quiser mudar a ação de algum sinal para uma das outras ações padrão, você pode levantar outro sinal que faz o que você quer (para obter um core dump ou para parar o processo), ou simplesmente sair (para terminar o processo).

SIGKILL e SIGSTOP são os dois sinais que você não pode capturar ou bloquear. sigaction(2) :

signum specifies the signal and can be any valid signal except SIGKILL and SIGSTOP.

e signal(7) :

The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.

No entanto, ignorar os sinais provenientes de falhas reais (acessos de memória inválidos, instruções inválidas) pode não deixar o processo em um estado muito estável.

    
por 23.11.2017 / 18:30

Tags