2015-12-21 43 views
1

我必須從Windows上我的Ruby代碼運行外部可執行文件,對於這一點,我使用的Ruby,Windows,spawn - 如何解決資源暫時不可用EAGAIN?

spawn 

方法。
有時我必須經常運行同一個程序,它會很快執行,然後馬上退出。不要緊,我只是不運行該程序幾秒鐘。

的問題是 - 有時我得到這個錯誤:

C:/Program Files/Ruby22/lib/ruby/2.2.0/open3.rb:193:in `spawn': 
Resource temporarily unavailable - identify (Errno::EAGAIN)```` 

我試圖安全地從轟然失敗,我想任何方法搶救和/或防止主Ruby程序,即使有這樣的例子:

begin 
    spawn("#{cmd}") 
rescue Exception 
    sleep 0.3 
end 

我無法得到正確的結果。

如何拯救這種情況或如何正確地線程/叉和防止主程序崩潰?
(如果可能的話 - 不調整內核/其他參數以增加最大進程?)。

回答

1

我發現通過仔細的閱讀了Ruby Wiki

The parent process should use Process.wait to collect the termination 
status of its child or use Process.detach to register disinterest in their 
status; otherwise, the operating system may accumulate zombie processes. 

我沒有這個錯誤了,如果我做的:

pid = spawn("#{cmd}") 
Process.detach pid 
相關問題