当我打开页面时,exe 应该运行。异步进程需要运行。
有没有办法在ruby中使用两个参数异步运行exe?
我已经尝试过 ruby 命令 - system() , exec() 但它正在等待过程完成。我需要使用参数启动 exe 无需等待过程完成
是否有任何 rubygems 将支持我的问题?
当我打开页面时,exe 应该运行。异步进程需要运行。
有没有办法在ruby中使用两个参数异步运行exe?
我已经尝试过 ruby 命令 - system() , exec() 但它正在等待过程完成。我需要使用参数启动 exe 无需等待过程完成
是否有任何 rubygems 将支持我的问题?
您可以使用Process.spawn
和Process.wait2
:
pid = Process.spawn 'your.exe', '--option'
# Later...
pid, status = Process.wait2 pid
您的程序将作为解释器的子进程执行。除此之外,它的行为就像是从命令行调用的一样。
您还可以使用Open3.popen3
:
require 'open3'
*streams, thread = Open3.popen3 'your.exe', '--option'
# Later...
streams.each &:close
status = thread.value
这里的主要区别是您可以访问三个IO
对象。进程的标准输入、输出和错误流按顺序重定向到它们。
如果您打算使用程序的输出,或者通过其标准输入流与它通信,这非常有用。通常会在终端上打印的文本将改为可用于您的脚本。
您还将获得一个等待程序完成执行的线程,这既方便又直观。
exec
将控制权切换到新进程并且永不返回。system
创建一个子进程并等待它完成。
您可能想要做的是fork
然后exec
创建一个新进程而不等待它返回。您还可以使用win32ole
可能会给您更多控制的库。