Я пытаюсь прочитать стандартный вывод простого скрипта Python
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.