Jey*_*vel 5 ruby shell rubygems ruby-on-rails ruby-on-rails-3
当我打开页面时,exe应该运行.需要运行异步进程.
有没有办法在ruby中使用两个参数异步运行exe?
我已经尝试过ruby命令 - system(),exec()但它等待进程完成.我需要用参数启动exe,无需等待进程完成
是否有任何rubygems支持我的问题?
你可以使用Process.spawn和Process.wait2:
pid = Process.spawn 'your.exe', '--option'
# Later...
pid, status = Process.wait2 pid
Run Code Online (Sandbox Code Playgroud)
您的程序将作为解释器的子进程执行.除此之外,它的行为就像从命令行调用一样.
您还可以使用Open3.popen3:
require 'open3'
*streams, thread = Open3.popen3 'your.exe', '--option'
# Later...
streams.each &:close
status = thread.value
Run Code Online (Sandbox Code Playgroud)
这里的主要区别是您可以访问三个IO对象.流程的标准输入,输出和错误流将按此顺序重定向到它们.
如果您打算使用程序的输出,或通过其标准输入流与之通信,那么这很好.通常打印在终端上的文本将改为您的脚本.
您还会得到一个等待程序完成执行的线程,方便直观.