0
我在使用FIFO作为stdin时遇到了一些麻烦。带FIFO问题的输入循环
我有这样的脚本:
#!/usr/bin/env ruby
while true do
data = gets
puts "Got: #{data}"
end
然后我运行它想:
$ ./script < input.fifo &
$ echo testdata > input.fifo
它会打印出类似这样:
Got: testdata
Got:
Got:
Got:
Got:
Got:
etc.
我怀疑是东西FIFO错误。发送到脚本后,某些内容不会被清除。
我试图用一个C程序同样的事情用一个类似的输入循环使用的scanf(“%d” ......),并担任这样的:
$ echo 1 > input.fifo
Got: 1
Got: 1
Got: 1
Got: 1
etc.
所以它似乎是最后一个FIFO中的东西卡在那里。在ruby示例中,它是一个空行,因为获得了\ n。在第二个它是1本身。
任何人都可以提供任何见解吗?
谢谢!
嗯,也许我正在使用错误的工具。基本上我想要一些东西让我能够将用户输入引导到脚本,并让脚本在没有更多输入时等待。当其他东西被添加到输入文件时,我想执行下一行。任何想法我可能会这样做? – user1222728