[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Rake and removing a capturing ^C

Scott Taylor

4/5/2007 6:20:00 AM


How can I remove such a trapping from a program?

I'm running autotest through a rake task. Autotest uses ^C to
restart the tests, rake uses it to cancel the task at hand.

What would be the best way to remove this trap from rake?

Best,

Scott Taylor



On Apr 5, 2007, at 2:14 AM, Phy Prabab wrote:

> Umm, I guess my searching was just plain bad. Thanks for being
> kind to me though. Mucho gracias.
>
> Phy
>
> ----- Original Message ----
> From: Logan Capaldo <logancapaldo@gmail.com>
> To: ruby-talk ML <ruby-talk@ruby-lang.org>
> Sent: Wednesday, April 4, 2007 10:47:20 PM
> Subject: Re: Ruby and capturing ^C
>
> On 4/5/07, Phy Prabab <phyprabab@yahoo.com> wrote:
>> Hello!
>>
>> Is there any way to capture or "trap" ^C within Ruby? Something
>> similar to shell "trapping" is what I am after so that I can do
>> clean up in the event ^C is pressed.
>>
>> TIA!
>> Phy
>>
> It's one thing when you don't know what to search for, but did you
> even try?
> http://www.google.com/search?hl=en&q=ruby+trap&btnG=Goo...
>>
>>
>>
>>
>> _____________________________________________________________________
>> _______________
>> The fish are biting.
>> Get more visitors on your site using Yahoo! Search Marketing.
>> http://searchmarketing.yahoo.com/arp/sponsoredsea...
>
>
>
>
>
>
>
>
>
> ______________________________________________________________________
> ______________
> Sucker-punch spam with award-winning protection.
> Try the free Yahoo! Mail Beta.
> http://advision.webevents.yahoo.com/mailbeta/features...


2 Answers

Sylvain Joyeux

4/5/2007 6:37:00 AM

0

On Thursday 05 April 2007, Scott Taylor wrote:
> How can I remove such a trapping from a program?
>
> I'm running autotest through a rake task. Autotest uses ^C to
> restart the tests, rake uses it to cancel the task at hand.
>
> What would be the best way to remove this trap from rake?
Under Posix, you would have to use sigmask(). I don't think there is a ruby
equivalent though ...

Note that ^C is already trapped by the interpreter, which raises
Interrupt ...
--
Sylvain Joyeux

Joel VanderWerf

4/5/2007 7:05:00 PM

0

Scott Taylor wrote:
>
> How can I remove such a trapping from a program?
>
> I'm running autotest through a rake task. Autotest uses ^C to restart
> the tests, rake uses it to cancel the task at hand.
>
> What would be the best way to remove this trap from rake?

I don't know if this will help without hacking into rake or autotest,
but you can save and restore the handler. The return value of #trap is
the previous handler, which is just a proc object:

irb(main):001:0> oldh = trap("INT") {puts "newh"}
=> #<Proc:0x02b2ac30@c:/ruby/lib/ruby/1.8/irb.rb:65>
irb(main):002:0> ### <-- I pressed ^C and Enter here
newh
irb(main):003:0*
irb(main):004:0* newh = trap("INT", &oldh)
=> #<Proc:0x02e14428@(irb):1>
irb(main):005:0>
^C

There is also a useful special case. If you pass "DEFAULT" as the
handler, you go back to ruby's default (which is different from irb's
handler):

irb(main):001:0> trap("INT", "DEFAULT")
=> #<Proc:0x02b2ac30@c:/ruby/lib/ruby/1.8/irb.rb:65>
irb(main):002:0> ### <-- I pressed ^C and Enter here
c:/ruby/lib/ruby/1.8/irb/input-method.rb:97:in `gets': Interrupt
from c:/ruby/lib/ruby/1.8/irb.rb:132:in `eval_input'
from c:/ruby/lib/ruby/1.8/irb.rb:259:in `signal_status'
from c:/ruby/lib/ruby/1.8/irb.rb:131:in `eval_input'
from c:/ruby/lib/ruby/1.8/irb/ruby-lex.rb:189:in `call'
from c:/ruby/lib/ruby/1.8/irb/ruby-lex.rb:189:in `buf_input'
from c:/ruby/lib/ruby/1.8/irb/ruby-lex.rb:104:in `getc'
from c:/ruby/lib/ruby/1.8/irb/slex.rb:206:in `match_io'
from c:/ruby/lib/ruby/1.8/irb/slex.rb:76:in `match'
... 8 levels...
from c:/ruby/lib/ruby/1.8/irb.rb:70:in `start'
from c:/ruby/lib/ruby/1.8/irb.rb:69:in `catch'
from c:/ruby/lib/ruby/1.8/irb.rb:69:in `start'
from c:/ruby/bin/irb.bat:20
Terminate batch job (Y/N)? y


--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407