2015-12-21 74 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 
相关问题