在 Ruby 中生成独立的线程或进程

2024-02-12

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

我有一个 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Ruby 中生成独立的线程或进程 的相关文章

  • subprocess.Popen('start') 失败

    在 python 中运行此命令将导致 WindowsError 指出找不到指定的文件 FAILS import subprocess subprocess Popen start notepad exe 在命令窗口中 它可以工作 start
  • 从 Ruby 中的 DateTime 变量获取时间

    我在 ruby 中工作 我有一个包含数据库中今天的日期时间的对象 我只想要时间截断数据 我怎样才能得到那个 Try 日期时间 strftime http www ruby doc org stdlib 1 9 3 libdoc date r
  • 可以覆盖/实现的 ruby​​ 运算符列表

    是否有可以覆盖的所有 ruby 运算符的列表 不是那些不能的 Here s Ruby 运算符表 http phrogz net programmingruby language html table 18 4 方法和可重载的有 Elemen
  • 如何向 Time.now 添加两周?

    如何在 Ruby 中向当前 Time now 添加两周 我有一个使用 DataMapper 的小型 Sinatra 项目 在保存之前 我有一个字段填充了当前时间加上两周 但未按需要工作 任何帮助是极大的赞赏 我收到以下错误 NoMethod
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • uri 警告中缺少端口:使用 Python OpenCV cv2.VideoCapture() 打开文件时出错

    当我尝试流式传输 ipcam 时 出现了如下所示的错误 tcp 000000000048c640 uri 中缺少端口 警告 打开文件时出错 build opencv modules videoio src cap ffmpeg impl h
  • Ruby 枚举器中的“break”与“raise StopIteration”

    如果我使用 Ruby Enumerators 来实现生成器和过滤器 generator Enumerator new do y x 0 loop do y lt lt x x 1 break if x gt CUTOFF end end l
  • 在我的 ramaz 应用程序上显示 £ 符号时,我收到“不兼容的字符编码:CP850 和 UTF-8”

    显示时收到 不兼容的字符编码 CP850 和 UTF 8 我的 ramaz 应用程序上的符号 我怎样才能摆脱这个错误 我的 head 标签中有 UTF 8 元标签 当我输入 用键盘输入符号 看 我已将以下代码放入我的 ruby 文件中 但它
  • Pip 无法在 Windows 上安装 Twisted

    我正在尝试在 Windows 8 计算机上安装 Twisted 在 Twisted 官方网站上 只有一个 Windows 版的 Wheel 文件 https twistedmatrix com trac wiki Downloads htt
  • yard 0.7.3 无法在 Markdown 和 Textile 中构建我的自述文件

    我决定将我的项目中的 README 文件转换为 Markdown 并一直使用yard 验证文档是否正确呈现 所以我安装了 rdiscount 将 README 更改为 README md 并尝试 yard doc README md 这给了
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • 使用 BitmapEncoder 生成时如何使 GIF 循环重复

    我能够使用 BitmapEncoder C WinRT 创建动画 gif 但是 我一直无法弄清楚如何让GIF循环回来并从头开始 没有尝试太多 因为我不确定要尝试什么 搜索了更多要在 GIF 上设置的属性 但找不到任何相关内容 好吧 终于能弄
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • Heroku 部署错误

    在 Windows 环境中 尝试部署到 Heroku 时出现以下错误 C Ruby lib ruby gems 1 8 gems heroku 1 9 13 lib heroku commands base rb 32 in 没有这样的文件
  • 我在 Rails 中使用了保留字吗?

    这是我的模型 class Record lt ActiveRecord Base belongs to user belongs to directory end class Directory lt ActiveRecord Base h
  • 如何在Windows 8上正确使用SCardGetStatusChange?

    智能卡服务在 Windows 8 上的行为有所不同 并且 MSDN 尚未更新其文档 任何人都可以提供有关如何正确调用 SCardGetStatusChange 来监视 Windows 8 上的智能卡操作的代码片段吗 提前致谢 这是我为个人博
  • 没有要加载的文件 - ffi_c (LoadError)

    这个问题困扰了我几天 每当我使用 bring to front 方法时 require rubygems require watir browser Watir Browser new browser bring to front 我收到此
  • ruby从1.8.7升级到1.9.2(使用Rails 3.1.1)后本地服务器错误

    我刚刚安装了rvm并使用rvm将ruby从1 8 7升级到1 9 2 我在我的应用程序上运行了捆绑安装 它重新安装了我的 gems 当我在本地运行 Rails 服务器并将浏览器导航到 localhost 3000 时 服务器日志中显示以下错
  • Delphi中使用FindVCLWindow调用WinHelp32(WinXP Pro SP3 32bit)

    有什么问题吗 procedure TForm1 VCLHelpClick Sender TObject var Ctrl TWinControl begin Ctrl FindVCLWindow Mouse CursorPos if Ctr
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开

随机推荐

  • GCC 中 -O0 和 -O1 的区别

    在编译一些代码时 我注意到 O0 和 O1 之间创建的汇编器存在很大差异 我想运行启用 禁用优化 直到找出导致汇编器发生某种变化的原因 如果我使用 fverbose asm 准确找出 O1 与 O0 相比启用了哪些标志 然后手动禁用它们 为
  • 如何删除输入日期的 x 和向上/向下箭头元素?

    我唯一需要在框中显示的是橙色三角形 并且我不确定是否需要 CSS 或其他内容来删除三角形左侧的两个元素 有办法这样做吗 我只是使用输入类型date Fiddle http jsfiddle net 5M2PD 1 http jsfiddle
  • 队列性能明智哪个是更好的实现 - 数组或链表

    当我必须插入很少的元素时 哪种方式可以更快地入队和出队 数组比链表更好吗 我需要插入一些元素 并且必须从队列中删除并读取该删除的元素 如果它是数组 每次删除元素时我可能都必须修改索引 插入和删除也可能同时发生 从下面的案例来看 哪一个更好呢
  • 有什么理由避免 return 语句

    有时我会看到大段的 Scala 代码 其中包含多个嵌套级别的条件和匹配 使用显式 return 退出函数会更加清晰 避免那些显式的 return 语句有什么好处吗 A return may be通过抛出异常来实现 所以它may have与声
  • 我需要帮助设置 .NET HttpWebRequest 超时

    我的目标是在最短的时间内从多达 6000 个 URL 中获得答案 它运行得非常好 5200 个 LAN 地址需要 12 秒 直到开始出现一些延迟 我的代码最多同时使用 20 个 HttpWebRequest BeginGetResponse
  • 如何使用 R 找到最适合的圆/椭圆?

    我一直在阅读一些将圆适合数据的方法 例如this http www cs bsu edu homepages kerryj kjones circles pdf 我想看看这些方法如何在真实数据上发挥作用 并考虑使用 R 来实现这一点 我尝试
  • 为什么我的文本文件不断覆盖其中的数据?

    我试图从产品的 Facebook 页面中提取一些数据并将其全部转储到文本文件中 但我发现该文件不断用数据覆盖自身 我不确定这是分页问题还是我必须制作多个文件 这是我的代码 Modules import requests import fac
  • 不同图像方向和纵横比的 CollectionView 布局?

    我想知道我们如何使用 CollectionView 来显示不同尺寸 长宽比和方向的图像 有没有办法在这些图像中找到 匹配 看一下 DeviantArt iOS 应用程序的屏幕截图 您可能已经注意到 具有相同高度并且可以安装在屏幕中的图像位于
  • 如何获取给定月份的每个星期一?

    如何获取给定月份的每个 星期一 一个例子 输入 2017 年 7 月 11 日 11 07 2017 输出 3 10 17 24 31 2017年7月3日 星期一2017年7月10日 星期一2017年7月17日 星期一2017年7月24日
  • 读取无符号整数时如何将负数检测为解析错误?

    我想从 C iostream 中读取以 10 为基数 十进制 表示的无符号整数 并至少进行基本的错误检测 在我看来 在这种情况下 减号显然是一个错误 因为无符号整数没有符号 然而 gcc却有不同的看法 include
  • 避免节流 dynamoDB

    我是云计算的新手 但有一个问题 我将要描述的机制是否存在或可以创建 Dynamodb 已配置吞吐量 例如 100 次写入 秒 当然 在现实世界的应用程序中 实际吞吐量是非常动态的 几乎永远不会是您配置的 100 次写入 秒 我在想 dyna
  • 将 MS-Access 数据库转换为 SQL 脚本的工具

    我们的软件包使用MS Access数据库 这个数据库已经修改了很多次 所以 光看文件有点复杂 表之间的关系很小 无论如何 有没有一种方法或程序可以将此 mdb 文件转换为 SQL 脚本 目前任何类型的 SQL 脚本都可以执行此操作 Than
  • 找不到适用于 GeoJsonPoint 类型的构造函数

    很难弄清楚我做错了什么 遗憾的是我曾经让它工作过 但无法确定我改变了什么破坏了它 据我了解 现在应该完全支持 有问题的对象 Document public class Place public final static String URI
  • C代码模块化有哪些方法?

    随着项目规模的扩大 您知道哪些方法 实践和约定可以模块化 C 代码 创建仅包含使用模块所需内容的头文件 在相应的 c 文件中 将任何不应该在外部可见的内容 例如辅助函数 设为静态 对外部可见的所有内容的名称使用前缀有助于避免命名空间冲突 如
  • 训练CNN时如何去除重复项?

    我正在使用 CNN 解决图像分类问题 我有一个包含重复图像的图像数据集 当我用这些数据训练 CNN 时 它出现了过拟合 因此 我需要删除那些重复项 我们粗略地称为重复的东西对于算法来说可能很难辨别 您的重复项可以是 精确重复 近乎精确的重复
  • 动态触发 HTML5 缓存清单文件?

    我正在使用 HTML5 的新缓存清单功能来缓存我的 Web 应用程序 以便它可以离线工作 当页面加载以下 html 元素时 内容会自动缓存 这很好用 但是 我想让我的用户可以选择是否要离线缓存内容 所以 这是我的问题 有没有什么方法可以使用
  • Rails - 从模型生成迁移脚本

    我正在学习 Rails 并且遇到了 Migrations 似乎每次我想要编辑模型时 我都需要添加迁移脚本 即使我尚未投入生产 您可以编辑模型 添加所需的所有属性 并在发布之前自动生成迁移脚本吗 Thanks 如果您使用的是 Rails 3
  • 如何在 FOSUserBundle 中为控制器重置设置 sender_name?

    我想更改名称sender name期间的电子邮件重置 我已经这样做了登记并取得了成功 这可以通过定义轻松完成fos user registration confirmation from email sender name 现在 我想为重置
  • 查询语言:参考查询请求

    跟着教程 有一个查询 query selectCommoditiesByOwner description Select all commodities based on their owner statement SELECT org a
  • 在 Ruby 中生成独立的线程或进程

    我可能会朝错误的方向接近这个问题 所以任何帮助将不胜感激 我有一个 Ruby 脚本 除其他外 它还启动一个可执行文件 我想启动这个可执行文件 当前正在使用系统 触发 然后继续执行脚本 当脚本完成时 我希望它退出但保持可执行文件运行 最初我有