2010-05-18 68 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

相关问题