Win32 Process Signals

Hey!

I user win32/Process to spawn a child Process in my Application

myProc = Process.create(:app_name => "ruby test.rb")

and kill it with

Process.kill(1, myProc.process_id)

How can i trap the signal in the Child Process to do cleanup stuff?

thx

···

--
Posted via http://www.ruby-forum.com/.

$ ri Signal.trap
----------------------------------------------------------- Signal::trap
     Signal.trap( signal, proc ) => obj
     Signal.trap( signal ) {| | block } => obj

···

------------------------------------------------------------------------
     Specifies the handling of signals. The first parameter is a signal
     name (a string such as ``SIGALRM'', ``SIGUSR1'', and so on) or a
     signal number. The characters ``SIG'' may be omitted from the
     signal name. The command or block specifies code to be run when the
     signal is raised. If the command is the string ``IGNORE'' or
     ``SIG_IGN'', the signal will be ignored. If the command is
     ``DEFAULT'' or ``SIG_DFL'', the operating system's default handler
     will be invoked. If the command is ``EXIT'', the script will be
     terminated by the signal. Otherwise, the given command or block
     will be run. The special signal name ``EXIT'' or signal number zero
     will be invoked just prior to program termination. trap returns the
     previous handler for the given signal.

         Signal.trap(0, proc { puts "Terminating: #{$$}" })
         Signal.trap("CLD") { puts "Child died" }
         fork && Process.wait

     produces:

         Terminating: 27461
         Child died
         Terminating: 27460

--
Avdi

Home: http://avdi.org
Developer Blog: http://avdi.org/devblog/
Twitter: http://twitter.com/avdi
Journal: http://avdi.livejournal.com

Avdi Grimm wrote:

         Signal.trap(0, proc { puts "Terminating: #{$$}" })
         Signal.trap("CLD") { puts "Child died" }
         fork && Process.wait

     produces:

         Terminating: 27461
         Child died
         Terminating: 27460

Yeah, i know. But this obviously doesn't work with win32.

My traps don't catch anything *gg*

ck

···

--
Posted via http://www.ruby-forum.com/\.

Avdi Grimm wrote:

         Signal.trap(0, proc { puts "Terminating: #{$$}" })
         Signal.trap("CLD") { puts "Child died" }
         fork && Process.wait

[snip]

Yeah, i know. But this obviously doesn't work with win32.

My traps don't catch anything *gg*

If you can't find a more portable solution, look at Win32 events, starting
with the CreateEvent function.

···

On Tue, 15 Apr 2008 07:59:42 -0500, Christian Kerth wrote:

--
Charles Calvert | Software Design/Development
Celtic Wolf, Inc. | Project Management
http://www.celticwolf.com/ | Technical Writing
(703) 580-0210 | Research