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

[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]



reply via email to

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