linux signal回调函数

本文深入讲解了信号处理函数signal在Linux系统中的应用,包括如何设置信号处理器以响应各种信号,如SIGINT、SIGQUIT等,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void my_signal_handler(int sig)
{

    printf("Received signal %d, quiting\n",  sig);
    exit(1);
}


// set up signal handler
signal(SIGINT,  my_signal_handler);
signal(SIGQUIT, my_signal_handler);
signal(SIGABRT, my_signal_handler);
signal(SIGTERM, my_signal_handler);
signal(SIGSEGV, my_signal_handler);

signal系统函数介绍:

https://linux.die.net/man/2/signal

Linux 应用程序中,回调函数是一种常见的编程技术。它可以让你在程序运行时动态地将一个函数指针传递给另一个函数,以便在特定的事件发生时调用该函数。 例如,当用户点击一个按钮时,可以使用回调函数来处理该事件。回调函数通常被定义为一个函数指针,它指向一个函数,该函数将在事件发生时被调用。 下面是一个简单的示例程序,演示了如何使用回调函数来处理用户输入事件: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <gtk/gtk.h> void on_button_clicked(GtkWidget *widget, gpointer data) { g_print("Hello, world!\n"); } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *button; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); button = gtk_button_new_with_label("Click me!"); gtk_container_add(GTK_CONTAINER(window), button); g_signal_connect(button, "clicked", G_CALLBACK(on_button_clicked), NULL); gtk_widget_show_all(window); gtk_main(); return 0; } ``` 在上面的示例程序中,我们使用了 GTK+ 库创建了一个简单的窗口和一个按钮。然后,我们使用 `g_signal_connect` 函数将按钮的 `"clicked"` 事件连接到一个回调函数 `on_button_clicked`。当用户点击按钮时,GTK+ 库将自动调用该函数。 回调函数的第一个参数通常是一个指向触发事件的控件的指针,而第二个参数通常是一个指向用户定义的数据的指针。在本例中,我们没有传递任何用户定义的数据,因此第二个参数为 `NULL`。 需要注意的是,不同的 GUI 库可能有不同的回调函数接口。上面的示例程序使用了 GTK+ 库,因此回调函数的参数类型和格式可能与其他 GUI 库不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值