2012-07-17 89 views
0

我正在嘗試使用分叉寶石(版本1.0.0)創建子進程。Windows7 x64紅寶石1.8.7分叉寶石1.0.0錯誤

我的基本代碼框架是:

child = Fork.new do |child| 
    ## something something something 
    ##  loop loop loop 
    ## something something something 
end 
child.execute 
child.wait 

下面的示例代碼中,我相信,但它始終返回一個非常反直覺的錯誤:

C:/Ruby187/lib/ruby/gems/1.8/gems/fork-1.0.0/lib/fork.rb:237:in `fork': fork() f 
unction is unimplemented on this machine (NotImplementedError) 
    from C:/Ruby187/lib/ruby/gems/1.8/gems/fork-1.0.0/lib/fork.rb:237:in `ex 
ecute' 

我有安裝了合適的寶石:

*** LOCAL GEMS *** 

addressable (2.2.8) 
childprocess (0.3.3) 
ffi (1.0.11) 
fork (1.0.0) 
libwebsocket (0.1.4) 
multi_json (1.3.6) 
mysql2 (0.3.11 x86-mingw32) 
net-sftp (2.0.5) 
net-ssh (2.5.2) 
net-ssh-gateway (1.1.0) 
rdiscount (1.6.8) 
rubyzip (0.9.9) 
selenium-webdriver (2.24.0) 

我試圖使用類的未來/調用方法組合,但這樣做似乎也不適合我。我安裝並重新安裝了好幾次,以確保這不是一個環境問題。

我也試着用win32-process gem工作,但是這需要一個我能理解的現有二進制文件,稱爲子進程。我真的不想訴諸於cygwin,但這可能是解決它的唯一方法。

你對這顆寶石有什麼經驗?

回答

0

你不能在Windows中「分叉」,但你可以使用其中一種紅寶石的系統調用:http://en.wikibooks.org/wiki/Ruby_Programming/Running_Multiple_Processes或win32-process或其他寶石,或直接調用winapi來調用其他方法。

+0

這是一個有趣的話題。我不需要完整的進程運行,但是我確實需要創建一個「線程」來執行一些簡單的操作,例如連接到數據庫並運行查詢。我會繼續研究,看看我能不能弄明白。 – mpozos 2012-07-18 18:35:08

+0

Thread.new可以幫助你在這裏... – rogerdpack 2013-12-06 19:47:59