gpt4 book ai didi

ruby - 如果父 ruby​​ 脚本被终止,则由 IO.popen 自动终止进程

转载 作者:数据小太阳 更新时间:2023-10-29 08:12:49 29 4
gpt4 key购买 nike

我正在尝试从 Windows 中的 ruby​​ 脚本运行 ffmpeg。

def execute_ffmpeg(command)
IO.popen(command){|io|
io.each{|line|
# Show Progress
}
}
end
command_ffmpeg = "ffmpeg -y -i input.avi -vb 1000k -ab 96k output.mp4 2>&1"
execute_ffmpeg(command_ffmpeg)

如果我等到编码完成,它工作正常。但是如果我终止 ruby​​ 脚本,ffmpeg 的进程仍然在后台。

如何在父 ruby​​ 进程终止时终止 ffmpeg 进程?

我在 Windows 7 中使用 ruby​​ 1.9.3。

最佳答案

让子进程与父进程共享一个管道。在子进程中有一个线程调用 IO.select 就可以了。如果管道关闭,您就知道父进程已死亡。参见 https://github.com/vaneyckt/Adeona/blob/master/lib/adeona.rb实现。

编辑:刚注意到您使用的是 Windows 7。不确定我的方法是否适用于 Windows。

关于ruby - 如果父 ruby​​ 脚本被终止,则由 IO.popen 自动终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15906473/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com