• 如何在终端中显示程序的实时输出 -- stream buffering

    // main.swift
    import Foundation
    
    print(123)
    sleep(1)
    print(456)
    sleep(1)
    print(789)
    

    上面是一段可以执行至少两秒钟的 Swift 代码, 我们可以在命令行中以 nohup swift main.swift &>output.txt & 命令执行, 然后在另一个命令行窗口中使用 tail -f output.txt 命令实时查看文件内容变化. 按照我们直觉, 程序会在执行的第 0 秒打印 123, 第 1 秒打印 456, 第 2 秒打印 789, 但是结果是直到第 2 秒一次性打印了所有内容, why?