[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
redirecionamento ou TMOUT
From: |
moysespr |
Subject: |
redirecionamento ou TMOUT |
Date: |
Tue, 30 Aug 2005 11:51:54 -0700 (PDT) |
Tenho problemas usando o cat lendo filedescriptors com conexões TCP.
Já consegui reduzir muito o problema lendo o header HTTP com o read do
bash e, apenas se ele for recebido, continuar com um cat lendo os dados.
Essencialmente algo assim:
read <&3
....
[ $ok ]&&cat <&3
Isso diminui muito as falhas, mas mesmo usando essa seqüência, a cada (estimo
eu) algumas dezenas de milhares de conexões o script trava exatamente no cat,
com uma causa que desconheço.
Contornei isso há algum tempo usando o read para ler tudo, inclusive arquivos
binários. O problema é que o read é uma opção muito mais lenta e agora não é
mais adequado devido ao maior número de transferências binárias.
Questões:
1. é possÃvel redirecionar os dados recebidos de um fd para a saÃda de
outro, sem usar um programa externo como, cat, dd, head, etc.,
algo do tipo: "<&3 >&1".
Isto acho que poderia ser testado com um arquivo:
$ <a >b # ou algo parecido; eu ainda não achei o caminho
2. considero que solução à questão 1 poderia resolver, pois imagino que
a variável TMOUT interromperia essa leitura se ela fosse exclusivamente
via shell, embora talvez à custa da execução do próprio script (tolerável)
3. já pesquisei, mas não percebi como, ou se é possÃvel, usar um trap para
matar um binário que não mais responde e que foi chamado pelo shell
4. existe algum programa muito pequeno, ao estilo do cat, que possua timeout?
Detalhe: o script roda em um 486 com 8MB de memória, e não quero me dar
ao luxo de ter outro processo para controlar a conclusão dessa tarefa.
Grato por qualquer orientação.
PS.: ocorria um problema parecido com o exec no estabelecimento da conexão
TCP, mas esse nunca mais apareceu usando o bash 3.x .
____________________________________________________
Start your day with Yahoo! - make it your home page
http://www.yahoo.com/r/hs
- redirecionamento ou TMOUT,
moysespr <=