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