如何在 ruby 中使用两个参数异步运行 exe



exe 应该在我打开页面时运行。异步进程需要运行。

有没有办法在 ruby 中使用两个参数异步运行 exe?

我已经尝试了Ruby命令 - system(),exec(),但它正在等待该过程完成。 我需要用参数启动 exe 无需等待过程完成

是否有任何红宝石会支持我的问题?

您可以使用

Process.spawnProcess.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库,这可能会为您提供更多控制权。

最新更新