This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Can I get a sigint when the bash window closed with close window's button?
On Tue, 15 Nov 2005, Joe Smith wrote:
> "Igor Pechtchanski" <pechtcha@XX.XXX.XXX> wrote in message Pine.GSO.4.63.0511151424250.15491@slinky.cs.nyu.edu">news:Pine.GSO.4.63.0511151424250.15491@slinky.cs.nyu.edu...
<http://cygwin.com/acronyms/#PCYMTNQREAIYR>. Thanks.
> > On Tue, 15 Nov 2005, Konrad Eisele wrote:
> >
> > > When th cygwin bash window is closed by clicking on the window's
> > > close button the the appliaction gets killed without recieving a
> > > sigint or any atexit called. Is there a way to be able to run
> > > cleanup code when the application is about to be killed?
> >
> > According to exceptions.cc, a SIGHUP will be sent to bash in this
> > case. Are you handling the right signal?
> >
> > BTW, the atexit() callback also should be called -- do you have a
> > simple testcase to reproduce the problem?
> > Igor
>
> I know nothing about signals, but this program when run inside bash does
> not seem to run callback() *ever*.
> ^c does not run it. Closing the bash window does not run it. But if you
> remove the loop then it *is* run.
>
> #include <stdio.h>
> void callback()
> {
> FILE *current;
>
> current=fopen("test.txt","a");
> fprintf(current,"atexit");
> }
>
> int main()
> {
> atexit(*callback);
> while(1)
> {};
> }
IIRC, the atexit callback is not supposed to be invoked from a default
signal handler. In fact, Cygwin defines a signal_exit specifically to
avoid invoking it. If you change the above to terminate on something
other than a signal (e.g., a condition in the loop), your callback will be
invoked. Adding a signal handler that calls exit() should also cause the
callback to be invoked.
Igor
--
http://cs.nyu.edu/~pechtcha/
|\ _,,,---,,_ pechtcha@cs.nyu.edu
ZZZzz /,`.-'`' -. ;-;;,_ igor@watson.ibm.com
|,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D.
'---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow!
If there's any real truth it's that the entire multidimensional infinity
of the Universe is almost certainly being run by a bunch of maniacs. /DA
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/