[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] redirecionamento ou TMOUT
From: |
moysespr |
Subject: |
Re: [shell-script] redirecionamento ou TMOUT |
Date: |
Wed, 31 Aug 2005 21:15:33 -0700 (PDT) |
Óbvio que és o Felipe. Se não falas nem teria percebido minha falha. Sorry:(
--- Felipe Kellermann <address@hidden> wrote:
> > Acho até hoje absurdo ter de usar prog.ext. apenas para isso. Sei que
>
> Na zsh, essa implementacao toma partido de um "comando" implicito. Esta'
> faltando um elemento nessa linha (gramaticalmente). Basta fazer com que
> seja executado o conteudo sobre algum comando.
"...seja executado o conteudo sobre algum comando"
Na bash?
Se sim, mas esse é o problema! Não lembro de um comando do shell que caiba
aqui, só o que chamo de programas (elementos externos ao shell), como o cat.
O read nao serve.
> Mas neste caso a TMOUT refere-se aa interacao com o usuario, com a entrada
> de comandos. Enquanto os comandos nao sao finalizados, a TMOUT nao estara
> sendo verificada. Faz um teste assim: Coloca um TMOUT qualquer e depois
> faz um loop ocupado,
>
> $ TMOUT=5
> $ while :; do :; done
> $
>
> Nao vai sair. A semantica seria mais util se fosse possivel fazer com que
> o TMOUT enviasse um alarme ao processo da shell. Na zsh funciona assim e
> eu nao lembro se a bash tem algum mecanismo parecido (se eu tenho um trap
> para ALRM, considera o TMOUT como um timer como um setitimer(2)).
Não vai sair porque o shell está trabalhando. Veja isto:
$ cat tm
#!/bin/bash
TMOUT=3
date
echo interno, read
while read;do date;done< <(cat)
date
echo externo, sleep
sleep 30
$ ./tm
Thu Sep 1 00:41:26 hrN 2005
interno, read
Thu Sep 1 00:41:29 hrN 2005
externo, sleep
No read eu sei que funciona, independente do shell ser interativo.
E se um "$ <a>b" fosse viável, funcionaria? Isto eu não sei.
Vou pesquisar essa tua idéia do trap.
>
> Se tiver alguma dica, envia. Provavelmente o modo mais "sujo" de trarar
> isso seria colocar algum processo em background, que enviaria um sinal e
> etc., mas isso ja seria chato e feio, seria melhor usar uma linguagem.
Esse processo novo é que não quero.
Olha o que observei há pouco:
web:/tmp$ cat a
abc
def
ghi
web:/tmp$ echo "$(<a)"
abc
def
ghi
web:/tmp$ exec 3<a
web:/tmp$ echo "$(<&3)"
web:/tmp$ exec 3<a
web:/tmp$ cat <&3
abc
def
ghi
web:/tmp$
Essa diferença entre $(<a) e $(<&3) eu não entendi.
> De qualquer forma, com meu bash seria um simples:
> $ (shopt -s nonblock; exec 3</etc/passwd; cat <&3)
Como não sei realmente o que acontece por baixo dos panos quando o cat fica
parado lendo o fd, pergunto:
$ (shopt -s nonblock; cat )
Ficaria preso?
Eu nunca tive problema usando arquivos locais, que me lembre, apenas em links
TCP ocorre o problema. Inclusive o experimento acima pareceu indicar-me que
coisas estranhas realmente acontecem. Ou há algo óbvio que não vi?
Grato pelo interesse.
____________________________________________________
Start your day with Yahoo! - make it your home page
http://www.yahoo.com/r/hs
- Re: [shell-script] redirecionamento ou TMOUT,
moysespr <=