|[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]|
Ben Johnson wrote:
On Thu, Jul 21, 2005 at 03:39:46AM +0200, Jochen Baier wrote:hi,i wonder what is the right procedure to do some cleanup if the user logout from sessionand the program is still alive. ("Save file before exit" etc)I thought "system (SIGHUP,...)" is the right way, but i didnt find this function in code from gedit, anjuta etc.. so what is the right way to do this ?as far as I know glib and gdk/gtk haven't added any support for signal handling, so I imagine using sigaction() and associated POSIX functions are what you'd want to use. (what is this system(SIGHUP,...) of which you speak? never heard of it.)
sorry should be called: signal(....)
the only thing I'm aware of that needs to be said about signal handling in relation to gtk is about dealing with asynchronous nature of signals. gtk assumes it knows everything about what threads are running. if you start executing gtk code during a signal handler, you run the (very probable) risk of making gtk stomp on itself when your handler runs on top of what gtk thinks is a thread-autonomous operation. I'm not sure exactly what mechanism to use... but the best way to handle signals is to make the actual signal handler do something very simple and non-gtk-interactive/invasive like setting some kind of simple flag -- THEN engineer some way for the gtk main loop to respond to that flag being set. make sense?
if found something interesting about it: http://wwwtcs.inf.tu-dresden.de/~tews/Gtk/x2991.html i also found out how gedit etc handle this:they connect to "save_yourself" ( WM_SAVE_YOURSELF) as part of session management.
well, thanx anyway Jochen _______________________________________________ gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list