gpt4 book ai didi

ruby - 在 Ruby 中产生一个独立的线程或进程

转载 作者:可可西里 更新时间:2023-11-01 13:10:20 34 4
gpt4 key购买 nike

我可能在错误的方向上接近这个,所以任何帮助将不胜感激。

我有一个 Ruby 脚本,其中包括启动一个可执行文件。我想启动这个可执行文件——当前正在使用系统“”触发——然后继续执行脚本。脚本完成后,我希望它退出但让可执行文件继续运行。

本来我有以下内容

# Do some work
# Start the executable
system("executable_to_run.exe")

# Continue working

但是 executable_to_run.exe 是一个阻塞的可执行文件,系统“”在可执行文件完成运行之前不会退出(我不希望它这样做)

所以我现在有这样的东西(大大减少了)

# Do some work
# Start the executable on it's one thread
Thread.new do
system("executable_to_run.exe")
end

# Continue working

这很好用,因为当线程在后台运行可执行文件时,我的脚本可以继续运行。不幸的是,当我的脚本退出时,可执行线程仍在运行,并且在线程退出之前不会退出。如果我终止可执行文件,线程将退出,脚本将退出。

所以我需要做的是触发“executable_to_run.exe”并让它在后台运行。

我在 Windows 上使用 Ruby 1.8.7,这意味着 fork 未实现。我无法升级到 1.9,因为我需要首先解决内部和外部团队依赖关系(并且不会很快完成)。

我试过了

  • 通过“开始”运行流程命令,但这仍然会阻塞
  • 在可执行线程上调用 Thread.kill但它仍然需要可执行文件被杀

那么这是我可以在 Ruby 中做的事情吗?我只是遗漏了一些东西,或者我有问题因为我不能使用 Fork?

提前致谢

最佳答案

detunized 的答案应该适用于 Windows。这是跨平台的:

pid = spawn 'some_executable'
Process.detach(pid) #tell the OS we're not interested in the exit status

关于ruby - 在 Ruby 中产生一个独立的线程或进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5593616/

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