GLib program termination signal handling?
Asked Answered
T

1

5

I've recently been exposed to GLib and am playing around with it. I have been able to replace a good deal of my C library functions with GLib functions (as an aside, I'm a huge fan of the command line handling!). However, one thing I haven't been able to find much documentation on is signal handling from the OS. Namely in Linux, is there a better way that I can handle CTRL+C or other signals to terminate the application? Currently I use signal(), but I'm wondering if there's a way that I can set up my handler for CTRL+C through GLib.

As always, thanks for the help.

Toadflax answered 26/7, 2013 at 5:45 Comment(0)
E
7

There is a way of using signals via GLIB! These are some of functions available for handling signals:

guint               g_unix_signal_add                   (gint signum,
                                                         GSourceFunc handler,
                                                         gpointer user_data);
guint               g_unix_signal_add_full              (gint priority,
                                                         gint signum,
                                                         GSourceFunc handler,
                                                         gpointer user_data,
                                                         GDestroyNotify notify);
GSource *           g_unix_signal_source_new            (gint signum);

Check out UNIX-specific utilities and integration, , g_unix_signal_add().

Euchromatin answered 26/7, 2013 at 6:13 Comment(3)
So I can just replace signal() with g_unix_signal_add()? That seems deceptively easy...Dahliadahlstrom
Why should it be more difficult? g_unix_signal_add is definied as a convenience function for g_unix_signal_source_new(), which attaches to the default GMainContex. You can achieve the same result using also this function g_unix_signal_source_new ().Euchromatin
What is the platform independent way to solve this?Ethiopia

© 2022 - 2024 — McMap. All rights reserved.