检测 lua stdin/stdout 变化

我有一个 lua 脚本,由一个外部进程启动,两者通过标准输入和标准输出相互交互,通过一个简单的循环:

local running = true;
while running do
    print('ready'); io.flush(); --父进程现在知道可以与 lua 脚本交互
    local input = io.read(); --父进程随时提供给 lua 脚本一个给定的输入
    if input=="exit" then running=false --这将结束脚本...
    else print(DoStuffWithInput(input)); --...或 lua 脚本在此响应
end

如果 lua 脚本检测到父进程不再存在,我希望它能够结束脚本,当前当父进程关闭时 CPU 占用率跳到 100%(可能是因为 io.read() 不再需要等待任何输入,但我不确定它正在读取什么)。

检测父进程是否已关闭的一种优雅且安全的方法是什么?

我尝试了一些方法,但 io.stdinio.stdout 总是似乎是一个文件,我不确定从这里该怎么办。

原文链接 https://stackoverflow.com/questions/69404848

点赞