通过shell脚本保持fifo打开状态

我尝试通过可以交互的脚本启动进程。

编辑:一般问题是通过PHP启动这些进程。 过程开始后,另一个php脚本(或再次运行相同)应读取进程的输出。 比第三个php脚本应该写入进程的input。 为了模拟由PHP启动我没有使用bash脚本,因为它有相同的问题。

为此,我创build了一个out-file,这个进程可以写入一个fifo进程读取。 我的过程是,例如passwd。

当我尝试像这样:

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

这是行不通的。 根据这个post EOF导致passwd进程的终止。

在提到的post解决之后,我试了一下

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

这创造了两个我可以看的工作

 jobs 

我的目标是,通过bash脚本启动

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

当我调用脚本时,将创buildPID = $ PID的进程,但不是作业。 而且,更重要的是,

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

不起作用,因为EOF再次通过pipe道发送。

我怎样才能保持从脚本打开pipe道?

我build议使用Tcl的“expect”库,尤其是对于脚本passwd; 它分配一个伪terminal去除大部分的惊喜,并让你根据结果采取行动。