De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários