From: Dan Yoder Date: 2007-11-03T04:00:37+09:00 Subject: Re: loop until a key (i.e. enter or ESC) is pressed Another possible approach is to use trap to catch the TERM or INT signals. From there, you can use a variety of strategies to shut the program down gracefully. You can either hit CTRL-C (or CTRL-D if you catch TERM) or write a very simple second program that sends the signal to the first program (start and stop scripts, basically). The second program will need the process id for the first, which could be written out to a designated file using $$. I don't know if trap is supported on Vista. One method of implementing trap on Windows I've seen (but never used personally) is to wrap the Kernel's trap method, like this: def trap(signal) Kernel::trap(signal){yield} Thread.new{loop{sleep 1}} end You can easily simulate a trap by simply checking a designated file (you can use $$ to generate a unique filename) for a termination string (like TERM, ASCII 4) on each iteration of the loop. Then your shutdown script would simply write the termination string to the file and exit. The listener script would see the exit string and shut down. As noted by Ara, this problem is much simpler on Unix, where threading is better supported. In the next version of Ruby, native threading will be supported (including on Vista) so hopefully you won't need these kinds of tricks. Dan --- Dan Yoder http://dev.zeraweb.com/ Ruby And JavaScript Consulting On Oct 30, 11:41 am, "ara.t.howard" wrote: > On Oct 30, 2007, at 11:17 AM, Wurzel Cidermaker wrote: > > > thanks...but... > > > doesn't work on my Windows XP box! > > > it prints the time once, then waits for input. > > > any ideas why? > > you can't easily multi-plex io on windows with ruby. search the > archvies but, mostly, this is very slippery and you have to have a > deep understanding of ruby's thread model to accomplish it. search > for 'threads blocking windows' in the archives. on *nix it's quite > easy - with windows you are going to have to adapt to a multi process > model i think. it's hard to say without knowing the details of your > program. > > sorry! > > a @http://codeforpeople.com/ > -- > it is not enough to be compassionate. you must act. > h.h. the 14th dalai lama