我尝试通过可以交互的脚本启动进程。
编辑:一般问题是通过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去除大部分的惊喜,并让你根据结果采取行动。