[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Problema: funcão com processo em bg dentro de uma substituição de comand
From: |
rapha.couto |
Subject: |
Problema: funcão com processo em bg dentro de uma substituição de comando |
Date: |
Wed, 06 Oct 2010 13:13:43 -0000 |
User-agent: |
eGroups-EW/0.82 |
Estou precisando executar um função que cria um "named pipe", roda um
processo em background que fica escutando esse pipe, e retorna o nome do
pipe criado. Na verdade o que estou querendo criar é em logger. Seria
algo assim:
createLogger(){
logFile=$1;
fifo=$(mktemp); #só pra criar um nome
rm -f $fifo;
mkfifo $fifo;
while ps -p $$ && [ -e $fifo ] #executa enquanto existe o pipe e a
aplicação está rodando
do
logText=$(cat $fifo);
echo $(date '+[%d-%m-%Y %H:%M:%S]:') $logText >> $logFile; #formata a
saída e direciona para o arquivo de log
done& #aqui eu rodo o while em background
echo $fifo;
}
Daí no script eu teria:
logger=$(createLogger /var/log/algum.log); #o problema é
quando eu uso a substituição de comando
echo Alguma informação > $logger;
ls naoexistente > $logger;
Se eu não precisasse fazer a substituição de comando o script
funcionaria blza. O problema é quando eu uso a substituição de
comando. Mesmo eu rodando o while em bg, o shell espera ele terminar pra
dar o retorno à variável, e parece que é o comportamento normal
do bash. Alguém sabe alguma forma de eu rodar esse while dentro da
função em bg e poder obter o endereço do pipe criado sem ter que
esperar o fim do while? Ou talvez outra forma de criar esse logger?
Obrigado.
[As partes desta mensagem que não continham texto foram removidas]
- Problema: funcão com processo em bg dentro de uma substituição de comando,
rapha.couto <=