码迷,mamicode.com
首页 > 其他好文 > 详细

回调函数示例

时间:2014-12-24 22:48:10      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

其实内核中有非常多的函数是回调函数,比如各种注册函数和初始化函数等

例如:request_irq、tasklet_init等,其实就是注册一个回调函数,然后在回调函数中一直执行所注册的句柄函数

这里是回调函数最简单的示例,内核中的很多函数基本原理类似:

linux@ubuntu:/mnt/shared/appbox/callback$ cat callback.c 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>


int handle_a(int val, char *str)
{
        printf("Enter %s, val:%d!\n", str, val);

        return 0;
}


int handle_b(int val, char *str)
{
        printf("Enter %s, val:%d!\n", str, val);

        return 0;
}


int callback(int value, int (*func)(int, char *), char *str)
{
        func(value, str);

        return 0;
}

int main(int argc, char *argv)
{
        callback(1, handle_a, "*handle_a*");
        callback(2, handle_b, "*handle_b*");

        return 0;
}

linux@ubuntu:/mnt/shared/appbox/callback$ 


函数输出,看起来很类似中断处理函数的做法:

linux@ubuntu:/mnt/shared/appbox/callback$ ./callback  
Enter *handle_a*, val:1!
Enter *handle_b*, val:2!
linux@ubuntu:/mnt/shared/appbox/callback$ 



回调函数示例

标签:

原文地址:http://blog.csdn.net/xiangpingli/article/details/42130989

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!