2012-07-17 88 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