|Don't ask to ask, just ask|
Cleaning up after CTRL-C when using Net::DNS::Nameserver on Windows?by elwarren (Priest)
|on Jan 03, 2005 at 21:07 UTC ( #419058=perlquestion: print w/replies, xml )||Need Help??|
elwarren has asked for the wisdom of the Perl Monks concerning the following question:
I've used the Net::DNS::Nameserver module to run a local nameserver on my windows workstation. After teaching it a few tricks and getting it to do what I want, I thought I would get fancy and have it register itself as my dns server. Win32::Ipconfig does this very nicely.
I store my current dns servers in a hash then set my adapter to use my local nameserver. When my server stops, I set the adapter back to the servers I saved. I put this step in the END block, but it doesn't seem to get called when I CTRL-C. In fact, nothing happens when I hit CTRL-C when I set my own signal handler.
After much gnashing of teeth and blaming signal handling on windows, I realized that Net::DNS::Nameserver must be handling signals in its own loop. I was hoping that the END in my code would execute after the modules cleanup, but it doesn't seem to be.
My question is simply, can I catch CTRL-C and cleanup, or somehow make sure my end code always runs? I have put together a small example below to illustrate the problem.
Back to Seekers of Perl Wisdom