Mantenha um fifo aberto pelo shell-script

2

Eu tento iniciar processos por script, que podem interagir.

EDIT: A questão geral é iniciar esses processos via php. Depois que o processo é iniciado, outro script php (ou o mesmo executando novamente) deve ler a saída do processo. Do que um terceiro script php deve escrever para a entrada do processo. Para simular o início pelo php eu usei um script bash, porque ele tem os mesmos problemas.

Para isso, eu crio um arquivo de saída, o processo pode gravar e um fifo, o processo lê. Meu processo é, por exemplo, passwd.

Quando eu tento assim:

mkfifo fifo.my
touch out.my
passwd > out.my 2> out.my < fifo.my & echo $!

não funciona. De acordo com esta postagem faz com que o EOF termine o processo passwd.

Após a solução da postagem mencionada, tentei

mkfifo fifo.my
touch out.my
cat > fifo.my &
passwd > out.my 2> out.my < fifo.my & echo $!

que cria dois trabalhos que eu posso assistir com

jobs

Meu alvo é, para começar isso via script bash

#!/bin/bash
cat > fifo.my & PID=$!
echo $PID

Quando eu chamo o script, um processo com PID = $ PID é criado, mas não um trabalho. E muito mais importante,

passwd > out.my 2> out.my < fifo.my & echo $!

não funciona, porque novamente um EOF é enviado pelo pipe.

Como posso manter o pipe aberto a partir de um script?

    
por kvogelsa 18.07.2012 / 12:49

1 resposta

0

Eu sugiro usar a biblioteca "expect" do Tcl para isso, especialmente para o script passwd; ele aloca um pseudo-terminal que remove a maioria das surpresas e permite que você aja com base nos resultados.

    
por 18.07.2012 / 14:58

Tags