Assine a Lista Dicas-L
Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.
Tratando sinais do sistema com o comando trap
Colaboração: André Leon S. Gradvohl
Data de Publicação: 02 de setembro de 2010
Em uma aula de sistemas operacionais (SO), comentou-se a respeito dos sinais que o SO envia aos processos e que, eventualmente, podem causar situações não previstas. Por exemplo, a sequência ctrl-c durante a execução de um processo causa seu encerramento.
Em algumas linguagens, em particular na linguagem C, a captura desses sinais para um eventual processamento pode ser feita com a primitiva signal. No interpretador de comandos BASH, isso também pode ser feito com o comando trap.
A sintaxe do comando trap é a seguinte:
trap [COMANDOS] [SINAIS]
Por exemplo:
trap "echo Buuu" SIGTERM SIGINT
No caso do exemplo anterior, ao pressionar ctrl-c ou se o usuário instanciar o comando kill para "matar" o script, a mensagem "Buuu" aparecerá no terminal do script.
O exemplo a seguir é mais completo:
#!/bin/bash
function trataErro()
{
echo "Voce pressionou ctrl-c"
echo "Mas nao posso terminar agora"
}
trap trataErro SIGINT SIGTERM
for i in {1..10}
do
sleep 1
echo "Dormindo"
done
No exemplo anterior, a função trataErro é chamada se o usuário pressionar ctrl-c durante a execução do script ou usar o comando kill para matar o script. A função trataErro por sua vez, imprime duas mensagens na tela, quando chamada.
Para uma lista de todos os sinais que podem ser tratados pelo comando trap, use o comando kill -l.
Mais informações podem ser encontradas nas man pages.
É isso.
André Leon S. Gradvohl é professor das disciplinas de Sistemas Operacionais e Introdução a Teleprocessamento e Redes na Faculdade de Tecnologia da Unicamp. Seus interesses incluem Processamento de Alto Desempenho e TV interativa.
Referências Adicionais
Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.




