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