Por que existem apenas dois sinais definidos pelo usuário?


11

Na lista de sinais definidos em um sistema Linux, existem dois sinais declarados como sinais definidos pelo usuário ( SIGUSR1e SIGUSR2). Outros sinais serão gerados ou capturados em situações específicas, mas os SIGUSRs serão deixados para uso do aplicativo do usuário.

Então, por que apenas dois sinais?

Respostas:


13

Historicamente, Unix teve apenas estes dois sinais, mas os sistemas modernos têm os sinais em tempo real SIGRTMIN... SIGRTMAX.

Devido à semântica maluca e não transportável das APIs de sinal, quase não há casos de uso em que os sinais sejam preferíveis a outros mecanismos de comunicação, como pipes. Portanto, nunca foi necessário alocar um novo número de sinal.


Obrigado. No meu caso, manipulo o SIGUSR1 para reconfiguração. Isso significa que quando o administrador deseja alterar a configuração do meu processo em execução, ele altera o arquivo de configuração e envia um SIGUSR1 para o meu PID (mais fácil de usar um canal aqui). E eu uso o SIGUSR2 para desligar o processo de forma limpa. Não foi necessário usar um sinal diferente desses dois, mas alguns recursos de tempo de execução podem ser implementados manipulando outros sinais definidos pelo usuário!
Saeedn 19/09/12

2
@saeedn Por que você não usa o SIGTERM para desligar o processo de maneira limpa? É para isso que serve. Muitos outros servidores usam o SIGHUP (que de outro modo é significativo em um processo interativo) como um sinal para recarregar arquivos de configuração, portanto, você pode considerar isso.
precisa saber é o seguinte

@ Random832 Você está certo, eu sei o que você diz. Mas o problema em que eu estava pensando era que, se eu acabasse minhas 31 opções de sinais?
Saeedn 19/09/12

1
Onde posso obter mais informações sobre os sinais SIGRTMIN ... SIGRTMAX? Onde eles são definidos quando são usados?
Strubbl

6

Os sinais fornecem apenas um meio primitivo de comunicação. Em particular, não há como anexar qualquer informação a eles. O destinatário sabe apenas o número do sinal, não a identidade do remetente. Vários sinais podem ser confundidos em um. Dadas todas essas restrições, não existem muitos propósitos úteis para sinais.

Para fins mais complexos, use meios de interação mais complexos, como tubos ou soquetes.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.