回调函数

✍ dations ◷ 2025-02-24 01:09:09 #计算机编程

在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过参数将函数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。

回调的用途十分广泛。例如,假设有一个函数,其功能为读取配置文件并由文件内容设置对应的选项。若这些选项由散列值所标记,则让这个函数接受一个回调会使得程序设计更加灵活:函数的调用者可以使用所希望的散列算法,该算法由一个将选项名转变为散列值的回调函数实现;因此,回调允许函数调用者在运行时调整原始函数的行为。

回调的另一种用途在于处理信号或者类似物。例如一个POSIX程序可能在收到SIGTERM信号时不愿立即终止;为了保证一切运行良好,该程序可以将清理函数注册为SIGTERM信号对应的回调。

回调亦可以用于控制一个函数是否作为:Xlib允许自定义的谓词用于决定程序是否希望处理特定的事件。

下列C语言代码描述了利用回调处理POSIX风格的信号(在本示例中为SIGUSR1)的过程。值得注意的是,在处理信号的过程中,调用printf(3)是不安全的。

#include <stdio.h>#include <signal.h>#include <unistd.h>void sig(int signum){        printf("Received signal number %d!\n", signum);}int main(int argc, char *argv){        signal(SIGUSR1, sig);        pause();                return 0;}

系统调用pause(3)会导致这个例子不做任何有意义的事,但这样做可以给你充分的时间来给这个进程发送信号。(在类Unix系统上,可以调用kill -USR1 <pid>,其中<pid>代表该程序的进程号。运行之后,该程序应当会有反应。)

回调的形式因程序设计语言而有差别。

相关

  • 腓力四世美男子腓力四世(法语:Philippe IV le Bel,1268年4月28日-1314年11月29日)卡佩王朝第11位国王(1285年—1314年在位),纳瓦拉国王(1284年起,称腓力一世)。他是卡佩王朝后期一系列强大有力
  • 威玛·鲁道夫威玛·格洛代安·鲁道夫(英语:Wilma Glodean Rudolph,1940年7月23日-1994年11月12日),美国女子田径运动员,擅长短跑。幼时罹患猩红热,引发了小儿麻痹症,导致左腿因此成了残疾。20世纪
  • 法属阿尔及利亚法属阿尔及利亚(法语:Algérie française,阿拉伯语:الاحتلال الفرنسي للجزائر‎,柏柏尔语:ⵜⴰⵙⴻⵃⵔⴻⵙⵜ ⵏ ⴼⵔⴰⵏⵙⴰ)始于1827年法国海军封锁阿
  • 曼哈顿滩曼哈顿海滩(英文:Manhattan Beach),是美国加利福尼亚州洛杉矶县下属的一座城市。建市于1912年12月12日,面积 大约为3.94平方英里 (10.2平方公里)。根据2010年美国人口普查,该市有
  • 新桥 (巴黎)新桥(法语:Pont Neuf)是法国巴黎塞纳河上最古老的桥,“新桥”这个名称是为了从许多连结两岸的桥梁中区别出来而取的。新桥位于西堤岛(位于塞纳河的中心,也是巴黎历史的核心)的西边,
  • 厄德 (西法兰克国王)巴黎的厄德(法语:Eudes de Paris,860年1月1日-898年1月3日),西法兰克国王。他是巴黎伯爵强者罗贝尔和他的第二位夫人的儿子。厄德的父亲死后西法兰克国王夏尔二世占据了厄德应有
  • 比尔·斯卡斯加德比尔·伊斯凡·冈瑟·史柯斯嘉(英语:Bill Istvan Günther Skarsgård,1990年8月9日-)是一位瑞典男演员。他著名作品有Netflix原创剧集《铁杉树丛》,以及在改编自斯蒂芬·金同名小
  • 萨曼德·吉布呼楞萨曼德·吉布呼楞(蒙古语:Самандын Жавхлан,Samandin Javhlan,1980年2月21日-)蒙古国乌布苏省乌兰固木人,蒙古国歌手、政治人物。1980年2月21日,吉布呼楞生于乌布苏
  • 腓力二世 (萨伏依)腓力二世(Philippe II de Savoie,1438年2月5日出生于尚贝里,1497年11月7日逝世于同地)是布雷斯伯爵,从1496年至他逝世短期还出任萨伏依公爵、皮埃蒙特统治者、奥斯塔和莫列讷伯爵
  • 觉罗祥鼐觉罗祥鼐(满语:ᠰᡳᠶᠠᠩᠨᠠᡳ,穆麟德:;1747年-1782年),字药圃。满洲正蓝旗人。清朝官员。同进士出身。乾隆三十一年(1766年)登第丙戌科三甲进士,年仅二十岁。授官工部主事。历任陕西