Hey Sonia, I messed around with such signal captures for the bonsai binary (http://github.com/benschwarz/bonsai/blob/master/bin/bonsai#L26-51) I found that using a begin block with `rescue Interrupt` worked the best.
Good luck! On Feb 20, 9:59 pm, Sonia Hamilton <[email protected]> wrote: > (Ruby 1.9) > > In a script, I would like to repeatedly start up a long running > subprocess, but only have one subprocess running at a time. If I send my > script an interrupt (ctrl-c), I'd like to kill the subprocess, clean up > some files, and exit my script. I've been playing with fork, wait, exec, > spawn, threads and trap - not getting very far... > > I guess my real source of confusion is when I send through the ctrl-c, > is it first caught by my script or the subprocess? > > How do I do this? Anyone have some sample code? > > This is how I thought I'd do it, but when I ctrl-c the output just > flashes and the script keeps running :-( > > pid = spawn(cmd) > Signal.trap(2) do # SIGINT, ctrl-c > puts "Removing #{outfile}..." > FileUtils.rm(outfile) > Process.kill(9,pid) # kill subprocess > Process.kill(9,0) # kill self > end > waitpid(pid, Process::WNOHANG) # only have one subprocess at a time > > The commands (cmd) look like this (high cpu video processing, so I only > want 1 running at once): > > handbrake -i foo/VIDEO_TS --preset='Normal' --longest --chapters 7 > --output mp4/foo.7.mp4 > > -- > Sonia Hamilton. -- You received this message because you are subscribed to the Google Groups "Ruby or Rails Oceania" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rails-oceania?hl=en.
