gpt4 book ai didi

ruby - 启动一个进程并在 ruby​​ 脚本退出后保持运行

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

我正在尝试编写一个 ruby​​ 脚本:

  1. 运行命令/脚本
  2. 将命令的进程 pid 存储在一个文件中,以便我稍后检查它是否仍在运行,并且
  3. 该命令应在 ruby​​ 代码退出后继续运行。

我在第 1 步和第 2 步中成功了,但看起来启动的脚本(即子进程)在 ruby​​ 代码完成后终止。

这是我能想到的最后一个版本( super 简化):

pid = fork do
exec "/my/fancy/daemon/style/script"
end
File.open('tmp/process.pid', 'w') { |file| file.write(pid.to_s) }

你能告诉我我做错了什么吗?最终目标是在 ruby​​ 代码退出后保持其他脚本(即子进程)运行。

最佳答案

您可以“分离”您的子进程:

Process.detach(pid)

参见 Process#detach了解更多信息。

如果您在 shell 上运行您的脚本,并且您的脚本是最后一个交互进程,您的虚拟终端可能会退出并导致您的子进程也挂起。如果您考虑不向终端发送输出,您可以在运行 exec 之前使用 Process.daemon。

参见 Process#daemon .

关于ruby - 启动一个进程并在 ruby​​ 脚本退出后保持运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975427/

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