2013-07-26 77 views
3

我最近接触过GLib,并且正在玩它。我已经能够用GLib函数替换大量的C库函数(另外,我是命令行处理的狂热粉丝!)。然而,有一件事我没有找到很多文档,从操作系统的信号处理。也就是说,在Linux中,有没有更好的方法可以处理CTRL + C或其他信号来终止应用程序?目前我使用signal(),但我想知道是否有一种方法可以通过GLib为CTRL + C设置我的处理程序。GLib程序终止信号处理?

一如既往,感谢您的帮助。

回答

5

有一种通过GLIB使用信号的方法!这些都是一些功能,可用于处理信号:

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); 

退房UNIX-specific utilities and integration, , g_unix_signal_add()

+0

所以我可以用g_unix_signal_add()替换signal()?这看起来似乎很容易... –

+0

为什么应该更困难? g_unix_signal_add被定义为g_unix_signal_source_new()的便捷函数,该函数附加到默认的GMainContex。您也可以使用此函数g_unix_signal_source_new()来获得相同的结果。 –