exe應該在我打開頁面時運行。異步進程需要運行。如何使用ruby中的兩個參數異步運行exe?
有沒有辦法運行EXE與Ruby中的兩個參數異步?
我已經嘗試了ruby命令 - system(),exec(),但它的等待過程完成。我需要啓動exe參數無需等待過程完成
是否有任何rubygems支持我的問題?
exe應該在我打開頁面時運行。異步進程需要運行。如何使用ruby中的兩個參數異步運行exe?
有沒有辦法運行EXE與Ruby中的兩個參數異步?
我已經嘗試了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
庫,它可能是give you more control。