以下命令冻结了一个长度大约为2000个字符的字符串:
lua -e 'print(io.read())'
知道为什么吗?
PS:Lua版本5.1.5
答案 0 :(得分:4)
这很可能是底层操作系统中终端IO的限制。它在达到Lua限制之前强制执行。
尝试在cat > /dev/null
输入一个长行。
答案 1 :(得分:2)
当不带参数调用时,io.read
使用默认格式"*l"
,它会读取下一行。底层缓冲区大小为C BUFSIZ
,您的输入字符串似乎已超出该限制。
将其更改为io.read("*a")
以阅读整个输入。请记住最后发送EOF
。