2013-07-26 118 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()來獲得相同的結果。 –