2010-05-18 60 views
3

我有一個輸出一堆文本的Ruby腳本。舉個例子:將Ruby腳本輸出存儲到文件中的問題

puts "line 1" 
puts "line 2" 
puts "line 3" 
# etc... (obviously, this isn't how my script works..) 

這裏沒有一個大量的數據 - 或許大概在總字符數據的8KB。

當我運行命令行腳本,它按預期工作:

$ ./my-script.rb 

line 1 
line 2 
line 3 

但是,當我推到一個文件,輸出正好4096字節截斷:

$ ./my-script.rb > output.txt 

什麼會導致它停在4kb?

更新:我只是改寫了劇本直接輸出到文件,而不是輸出到屏幕上,並捕獲輸出,並且該問題仍然發生!

$output = File.new("file.txt") 
$output << "line 1" #etc.. 
+0

'./my-script.rb | wc -c'? – 2010-05-18 07:58:21

+0

@MladenJablanović:8192 – nickf 2010-05-18 08:00:17

回答

4

您的程序是否正確終止? 4kB可以是I/O的OS內部緩衝區大小,當程序突然終止或根本不終止時,下一個緩衝區中的以下數據(最大8kB,即數據的總大小)會丟失。

+2

就是這樣!我在測試代碼中'退出!'......用'exit'代替並且很好...... – nickf 2010-05-18 08:02:02

相關問題