我有一个输出一堆文本的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 :(得分:4)
您的程序是否正确终止? 4kB可以是I / O的OS内部缓冲区大小,当程序突然终止或根本不终止时,下一个缓冲区中存在的以下数据(最多8kB,即数据的总大小)将丢失。