Creating Daemon Processes in Windows

From a ruby program I would like to start another process which should
continue to run even after the parent process dies.
Is there any way I could achive this?

From the child process I want to start an instance of SCGI server which
should continue to run even if the parent process dies.

After spending a while with google, I found following…

  1. Fork is not present on Windows; will have to use Win32-process module
    for
    enabling fork.
  2. Threads are the way to achiveve platform independence in such cases.
  3. Daemons module(support for POSIX systems) can be used for creating
    daemons, but only on UNIX systems.
    http://rubyforge.org/projects/daemons/.

I tried using threads from one of the methods of a controller of an RoR
application; I have following method in my controller which gets called
when
a link is clicked in one of the rhtml pages.

def servst
threads =[]
threads<< Thread.new {
system ‘cd C:\InstantRails\rails_apps\xyz &
C:\InstantRails\ruby\bin\ruby
C:\InstantRails\ruby\bin\scgi_service’
}
threads.each { |t| t.join}
end

when this method is called(on click of a link in an rhtml page), I.E.
progress bar goes on showing some progress, but never completes.
Note: The server I intend to start does gets started; but the current
session from where the server was started gets hung.
I need a way to start the server and continue traversing various links
in
the same session.

Thanks in Advance,

Jatinder

From: Jatinder S. [mailto:[email protected]]
Sent: Monday, June 05, 2006 3:29 PM

From a ruby program I would like to start another process which should
continue to run even after the parent process dies.
Is there any way I could achive this?
[…]
3. Daemons module(support for POSIX systems) can be used for creating
daemons, but only on UNIX systems.
http://rubyforge.org/projects/daemons/.

Windows has daemon-like concept named “service”. There is win32-service
module (inside win32utils project) for working with services.

Hope this helps.

V.

Thanks Victor!
Win32-service helped me achieve what I intended to do.

Thanks Again,
Jatinder