守护进程创建不使用Win32Utils ruby​​ gem

时间:2011-02-07 11:23:29

标签: ruby winapi windows-services

这是我尝试作为服务运行的代码。

            require 'rubygems'
            require 'win32/daemon'
            require 'win32/service'
            include Win32

               class Daemon
                  def service_main
                 while running?
                    sleep 3
                    File.open("c:\\test.log", "a"){ |f| f.puts "service is running" }
                 end
                  end

                  def service_stop
                 exit!
                  end
               end

            Daemon.mainloop

这是我用来注册服务的代码     要求'rubygems'     要求'win32 / service'

include Win32

SERVICE_NAME = 'ruby_sample1'

# Create a new service
ser = Service.create({
  :service_name        => SERVICE_NAME,
  :service_type       => Service::WIN32_OWN_PROCESS,
  :description        => 'A custom service I wrote just for fun',
  :start_type         => Service::AUTO_START,
  :error_control      => Service::ERROR_NORMAL,
  :binary_path_name   => 'c:\\Ruby186\\bin\\ruby.exe -C c:\\temp\\test.rb',
  :load_order_group   => 'Network',
  :dependencies       => ['W32Time','Schedule'],
  :display_name       => SERVICE_NAME
})

注册服务后,我尝试从services.msc启动服务。我收到错误消息“错误1053:服务没有及时响应启动或控制请求”

1 个答案:

答案 0 :(得分:2)

打开一个irb会话并说 - require'win32 / daemon'

最有可能你会得到1053问题的答案,特别是如果你已经为平台mswin32安装了win32-service gem。

我遇到了同样的问题,即使在安装devkit之后,win32-service gem也不会在我的机器上为平台ruby构建。它一直给我以下错误

win32 / daemon.c:141:7:错误:'__ try'unclaclared(首次在此函数中使用)

最终我通过在github上的最新代码构建win32-service gem结束了。