shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] herança de trap


From: Julio C. Neves
Subject: Re: [shell-script] herança de trap
Date: Fri, 22 May 2015 19:09:19 -0300

Fala Roberto,
como sempre o man tem razão, existe herança de sinal, mas existe uma pequena diferença de uso. Veja essa diferença aqui.

Para ver ao vivo e a cores, crie 2 arquivos, como esses:

$ cat tst
>/tmp/$$
trap 'rm /tmp/$$; exit' 2
read -p "read do processo 1 - $$"
tstx

$ cat tstx
> /tmp/$$
read -p "read do processo 2 - $$"

$$ contém o PID do programa que está em execução.
O 1º prg, cria um arquivo /tmp/PID1
Dá uma parada para vc ver o PID e qdo vc der <ENTER> ele chama txtx que tem o PID2
Execute txt e veja o arquivo referente a qual PID sobrou, uma vez visto, mate-o e edite o tst trocando os apóstrofos do trap por aspas.
Agora execute novamente e vc verá que o que sobrou foi o outro.


Abcs,
Julio
@juliobash
P
róximos cursos de Shell
Cidade         Local Período
Rio de Janeiro EDX 08 a 12/06/15
São Paulo 4Linux 15 a 19/06/15
Curitiba SoftCell 10 a 14/08/15

São Paulo 4Linux 21 a 25/09/15
São Paulo 4Linux 07 a 11/12/15

Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


2015-05-22 15:37 GMT-03:00 Roberto address@hidden [shell-script] <address@hidden>:
 

Olá, sou novo em shell scripts e estou com a seguinte dúvida com relação a traps;

O manual do bash diz o seguinte:

   "Command substitution, commands grouped with parentheses, and
asynchronous commands are invoked in a subshell environment that is a
duplicate of the shell environment, except that traps caught by the
shell are reset to the values that the shell inherited from its parent
at invocation."


Se eu criar uma trap qualquer, digamos "$ trap 'echo teste' SIGINT" e usar "( trap )" terei a seguinte saída:

trap -- 'echo teste' SIGINT
trap -- '' SIGTSTP
trap -- '' SIGTTIN
trap -- '' SIGTTOU

Ao usar trap num subshell '( )' o sinal SIGINT não deveria ser resetado ao valor original ou eu entendi errado esse trecho do manual?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]