在lua中使用popen读取python的stdout失败

我正在尝试读取简单python脚本的stdout

    import time
    while True:
        print("test")
        time.sleep(1)

使用以下lua代码

    local p = assert(io.popen("/usr/bin/python test.py", "r"))
    if not p then
        print("error")
    end
    print("process: "..tostring(p))

    while p do
        local line = p:read("*l")
        if line then
            print("line: "..tostring(line))
        end
    end

这将打印出一个进程文件标识符,但没有输出。

用'yes'命令代替后,该lua代码本身应该可以运行。但是调用python脚本的任何方法(包括shebang)都不会产生任何输出。将其更改为'sys.stdout.write("test" + "\n")'也没有任何影响。

我在两台运行archlinux和debian的机器上进行了尝试。第一个正在运行python 3.7.2和lua 5.3.5。

点赞