代码之家  ›  专栏  ›  技术社区  ›  nickf

Ruby脚本输出存储到文件中时出现问题

  •  3
  • nickf  · 技术社区  · 15 年前

    我有一个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..
    
    1 回复  |  直到 15 年前
        1
  •  4
  •   Didier Trosset    15 年前

    程序是否正确终止?4KB可以是I/O的操作系统内部缓冲区大小,当程序突然终止或根本不终止时,下一个缓冲区(最多8KB,即数据的总大小)中存在的以下数据将丢失。