【问题标题】:GLib program termination signal handling?GLib程序终止信号处理?
【发布时间】:2013-07-26 06:40:08
【问题描述】:

我最近接触了 GLib,并且正在使用它。我已经能够用 GLib 函数替换大量的 C 库函数(顺便说一句,我是命令行处理的忠实粉丝!)。但是,我找不到太多文档的一件事是来自操作系统的信号处理。即在 Linux 中,是否有更好的方法可以处理 CTRL+C 或其他信号来终止应用程序?目前我使用信号(),但我想知道是否有一种方法可以通过 GLib 为 CTRL+C 设置我的处理程序。

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

【问题讨论】:

    标签: c signals glib


    【解决方案1】:

    有一种通过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()

    【讨论】:

    • 所以我可以用 g_unix_signal_add() 替换 signal() 吗?这似乎很容易......
    • 为什么要更难? g_unix_signal_add 被定义为 g_unix_signal_source_new() 的便利函数,它附加到默认的 GMainContex。您也可以使用此函数 g_unix_signal_source_new () 获得相同的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多