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

$ 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 G. 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

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

Avdi G. 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.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs