【发布时间】:2011-10-19 11:06:51
【问题描述】:
我正在编写一个从 FIFO 读取数据的小 lua 脚本。为此,我使用经典的:
f=assert(io.open("/tmp/myfifo")
f:read()
当 fifo 为空/未输入时,我的脚本会阻塞。有没有办法避免这种情况?
【问题讨论】:
-
奇怪,这里它只是返回
nil,当先进先出中没有任何东西时。 -
Linux上的fifo似乎有阻塞读访问和非阻塞读访问。我的脚本尝试读取的 fifo 是由 mpd 生成的。如果我在空的fifo上使用cat,cat命令会阻塞直到fifo中有数据。
-
啊,现在我明白了。阻塞的是 io.open,而不是读取。
-
嗯不是真的,我检查过我是否只使用 f=io.open("/tmp/myfifo"); f:close 脚本不会阻塞
-
我认为使用基本 Lua 函数我尝试this post about fopen 设置模式 r+ 确实是不可能的 io.open 解除阻塞,但使读取阻塞:p
标签: lua