Re: at_exit handlers and Process.kill
- From: Ken Bloom <kbloom@xxxxxxxxx>
- Date: Tue, 15 Apr 2008 18:38:08 GMT
On Tue, 15 Apr 2008 12:29:01 -0500, Daniel Berger wrote:
Ken Bloom wrote:
On Tue, 15 Apr 2008 11:28:33 -0500, Daniel Berger wrote:
ts wrote:
Daniel Berger wrote:Why not? The docs say at_exit, "Converts block to a Proc object (and
# process_test.rbyou really think that the following line will be executed ?
File.open("pid.txt", "w"){ |fh| fh.print Process.pid } p Process.pid
sleep 1 while true
therefore binds it at the point of call), and registers it for
execution when the program exits."
Ruby does *everything* in the order it encounters it in the file.
at_exit installs an exit handler, (a proc to be run later) but it's a
method that has to be executed. If you put "sleep 1 while true" before
the at_exit call, the at_exit call will never be executed, so the exit
handler will never be installed. Adjust your program to call at_exit
(or whatever other handlers you want) before running anything else.
# process_test.rb
at_exit {
puts "AT_EXIT"
}
END{
puts "END"
}
trap("KILL"){
puts "KILLED"
}
File.open("pid.txt", "w"){ |fh| fh.print Process.pid } p Process.pid
sleep 1 while true
Right, I should have clarified that, even with the right ordering,
at_exit and END blocks weren't called.
Perhaps it's the signal I used? I haven't fully experimented yet...
Regards,
Dan
See signal(7) for descriptions and numbers of the various signals. Most
likely you want to use SIGINT (signal 1), and then at_exit will be
sufficient. Note that SIGKILL (signal 9) cannot be caught under any
circumstances (it's used to kill badly misbehaving applications), so your
sigkill handler is useless.
I think it's unnecessary to install lots of signal handlers to do the
cleanup. Just learn what each signal does, and what to expect, and
at_exit should already be designed to do what you want.
--Ken
--
Ken (Chanoch) Bloom. PhD candidate. Linguistic Cognition Laboratory.
Department of Computer Science. Illinois Institute of Technology.
http://www.iit.edu/~kbloom1/
.
- Follow-Ups:
- Re: at_exit handlers and Process.kill
- From: Gennady Bystritsky
- Re: at_exit handlers and Process.kill
- References:
- at_exit handlers and Process.kill
- From: Daniel Berger
- Re: at_exit handlers and Process.kill
- From: ts
- Re: at_exit handlers and Process.kill
- From: Daniel Berger
- Re: at_exit handlers and Process.kill
- From: Ken Bloom
- Re: at_exit handlers and Process.kill
- From: Daniel Berger
- at_exit handlers and Process.kill
- Prev by Date: Re: Question regarding mechanize lib
- Next by Date: Which is the best GUI kit for cross-platform OpenGL software?
- Previous by thread: Re: at_exit handlers and Process.kill
- Next by thread: Re: at_exit handlers and Process.kill
- Index(es):
Relevant Pages
|