[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] como cancelar a interrupção de um script???
From: |
Flavio Junior |
Subject: |
Re: [shell-script] como cancelar a interrupção de um script??? |
Date: |
Tue, 12 Sep 2006 09:09:44 -0300 |
Hm...
Na verdade o trap intercepta o sinal e quando ele ocorre executa uma
função (ai no seu caso a foo()), mas de qualquer forma o sinal ocorre
e é interpretado, ou seja, alterando seu proprio script pra uma
explicação melhor:
# codigo
#!/bin/bash
trap foo INT
function foo() {
echo bar;
}
#for i in $(seq 1 10); do
sleep 50
#done
# fim do codigo
Execute o script e pressione ctrl+c, a função foo() é executa porem o
script é finalizado com a interpretação do SIGINT, na mesma forma do
seu script original acontece se eu pressionar ctrl+c 10 vezes (que
seria o SIGINT pra sair de todos os laços do for).
Ao contrario disso, para IGNORAR o signal, voce deve fazer:
trap "" INT
Ficando o codigo:
# codigo
#!/bin/bash
trap "" INT
#for i in $(seq 1 10); do
sleep 50
#done
# fim do codigo
E prepare-se para esperar 50 segundos ;) - ou entao use o SIGSTOP
(ctrl+z) e mate o processo.
Boa sorte,
Flávio do Carmo Junior
On 9/11/06, Rafael Pereira <address@hidden> wrote:
Em Tue, 12 Sep 2006 00:30:28 -0300, Halexsandro de Freitas Sales
<address@hidden> escreveu:
> boa noite a todos...
> a minha dúvida é a seguinte:
> existe alguma forma de obrigar um script a ser executado até o fim???
> ou seja, durante a sua execução, se o usuário precionar 'ctrl + c'
> o mesmo não finalizar...
> desde já obrigado!
Sim, vc pode sobreescrever o comportamento normal de um sinal usando trap.
Por exemplo:
-- codigo --
#!/bin/bash
trap foo INT
function foo() {
echo bar;
}
for i in $(seq 1 10); do
sleep 5
done
-- codigo --
[]s
Rafael Pereira
http://rafael.computeiro.com
--
Usando o revolucionário cliente de correio do Opera:
http://www.opera.com/mail/
---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio
aviso.
---------------------------------------------------------------------
Sair da lista: address@hidden
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil
Links do Yahoo! Grupos