我尝试做什么:
创建管道(FIFO)。
将管道输出重定向到标准输入(& 1)。
将管道输入重定向到第4个描述符(& 4)。
运行我的程序(它应该复制它的父描述符,指向我的管道)。
将某些内容写入& 4(FIFO输入)。
我的程序读取它(从FIFO输出)。
input_pipe=$(mktemp -u);
mkfifo $input_pipe;
exec 1<$input_pipe;
exec 4>$input_pipe;
rm $input_pipe; #this should not remove the pipe itself
my_program &
echo $'input to be read by my_program' >&4;
#my program's answer should appear in stdout
不幸的是,它根本不起作用。我做错了什么?