Thomas Okken wrote:

> I would like to catch SIGINT in my GTK+ application,
> to do a graceful exit. I was looking for the GTK+
> equivalent of XtNoticeSignal(), but I guess there
> isn't one; when I searched the archive, all I found
> was some mention of a proposed GLib extension called
> g_signal_notify() -- which looks like what I'm looking
> for, but the thread in question is 6 years old and
> nothing seems to have come of it.
> I read a few articles discussing the use of a pipe,
> with an input source to handle the "noticing the
> event" bit within the main loop. It seems like a
> kludge, but I suppose it's workable... Is this still
> the recommended approach? (I notice the GTK
> documentation is utterly silent on the whole topic.)

Yes, this is still the recommended way. GTK+ itself doesn't support
dealing with Unix signals at all. To handle them you need to use the
Unix libc functions. They are (mostly) standardized by POSIX for about
every Unix there is. Note that Windows and other completely different
architectures have nothing comparable to Unix signals.

The main problem is that you MUST NOT call any GTK+ or Glib function
within your signal handler. The signal may occur any time, not just when
your program sits waiting in the GTK+ main loop. It's a very bad
happening when any GTK+ functions are getting called from within a
signal handler while the program was just interrupted when being in the
middle of the execution of any other GTK+ function, i.e. opening a
dialog, drawing things or just allocating or freeing some memory.

So there's no direct way to inform the application about a Unix signal
has been triggered and handled. You just can't send a GTK+ signal from
within the Unix signal handler, for the reason stated above. Using a
Unix pipe which is being monitored by the GTK+ main loop is a proper way
to inform the application about the Unix signal being handled.

For a code example of how to deal with Unix signals in GTK+, see:
http://wwwtcs.inf.tu-dresden.de/~tews/Gtk/x2992.html
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to