我真的找不到太多提到这一点的信息。这些标准 io 描述符在 Lua 中默认设置为缓冲还是非缓冲?如果需要,我可以从一种模式切换到另一种模式吗?
例如,在 python 中,它提供了类似sys.stdin.detach
使其无缓冲的东西。
请参阅setvbuf。它是底层 Csetvbuf
函数的接口。
例如,您可以像这样使用它:
io.stdout:setvbuf 'no' -- switch off buffering for stdout
AFAIK Lua 依赖于底层 C 运行时来挂钩标准流,因此我认为 C 标准流的通常保证适用。
因为这个问题还询问标准流的默认缓冲性。由于 Lua 在内部使用 C 的标准流,所以同样的规则适用:
标准 C 要求:
POSIX 暗示(但不要求):
和 C 一样,可以setvbuf
用来改变缓冲区状态。