【发布时间】:2015-01-21 05:56:06
【问题描述】:
我有这样的事情要做:
- 我有一个应用程序可以从标准输入中获取像“a = 1”这样的文本。
- 为以下内容创建脚本:
- 创建一个管道并将其重定向为上述应用程序的标准输入,
- 为用户创建第二个管道。
- 在循环中:
- 打开第二个管道并阅读。
- 到达终点后将其发送给第一个和^E
- 重复。
我做过类似的事情,但这不起作用。不明确的重定向(第 16 行)和错误的文件描述符(第 15 行)存在问题。怎么了?
mkfifo f1
mkfifo f2
p1 = /f1
p2 = /f2
exec 5<> $p1
./fifo -D $1 0<&5 &
while : ; do
while read L ; do
echo $L >&5
done <$p2
echo "5" >&5
done
【问题讨论】:
-
我很困惑。您能否尝试澄清一下,也许是输入和预期输出的示例?您只想运行该程序一次,对吗?是否要在 End-Of-File 之后继续处理新的一批输入?
-
它采用像 a=1、b=0 这样的行并计算 $1 中给出的表达式。评估在发送 ^E 后开始,它等待新值。使用 EOF 会停止。
-
要么我今天的阅读理解力真的很低,要么你在描述你想要这个做什么时非常草率。如果不是 EOF,应该如何终止内部循环?当您创建的先进先出为
f1时,为什么要指定/f1?如果您不是指 EOF,那么“到达终点”是什么意思?./fifo命令是什么?你想做的和简单的while : ; do while read line; do echo $line; done; echo 5; done | yourprogram有什么不同? -
./fifo 正是我的程序。嘿,如果我知道它是如何工作的,我就不会问了。我的问题中的这些观点与我所说的完全一致。