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