回调函数

✍ dations ◷ 2025-04-27 16:18:45 #计算机编程

在计算机程序设计中,回调函数,或简称回调(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>代表该程序的进程号。运行之后,该程序应当会有反应。)

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

相关

  • 伊本·阿拉比伊本·阿拉比(阿拉伯语:أبو عبد الله محمد بن علي بن محمد بن عربي الحاتمي الطائي‎,西班牙语:Abenarabi,1165年-1240年)是一个安达
  • 科学研究科学方法(英语:scientific method)指的是检查自然现象、获取新知识或修正与整合先前已得的知识,所使用的一整套技术。为了合乎科学精神,这方法必须建立于收集可观察、可经验(empir
  • abbr class=abbr title=R22: 吞食有害R22/abbr警示性质标准词(英语:Risk Phrases,简写:R-phrases)是于《欧联指导标准67/548/EEC 附录III: 有关危险物品与其储备的特殊风险性质》里定义。该列表被集中并再出版于指导标准2001/
  • 关塔那摩湾拘押中心关塔那摩湾拘押中心(Guantanamo Bay detention camp)是2002年美军在关塔那摩湾海军基地所设置的一座军事监狱,座落于古巴的关塔那摩湾沿岸。整个拘留营区是由三角洲营(Camp Delt
  • 林宗棠林宗棠(1926年-),福建闽侯人,中华人民共和国政治人物,曾任中华人民共和国航空航天工业部部长。1949年,林宗棠毕业于清华大学机械系,此后历任东北人民政府工业部科长、沈阳第一机床厂
  • 诺思罗普诺斯洛普公司(Northrop Corporation),简称诺普,是美国主要飞机制造商之一。由约翰·诺斯洛普创建。诺斯洛普于1916年在洛克西德航空器制造公司(Loughead)得到其在航空界的第一个工
  • 驻中华民国使节本列表为美国驻中华民国历任大使名录。现已断交。1953年后,美国在华大使改驻台北。1979年两国断交后美国成立美国在台协会,实际驻节于中华民国的美方代表为台北办事处处长。
  • 布城总理署布城总理署(马来语:Bangunan Perdana Putra;英语:The Perdana Putra Building;也称Office of the Prime Minister of Malaysia)是位于马来西亚行政首都布城联邦直辖区的一座融合西
  • 叶绿素b叶绿素b是叶绿素的其中一种,常作为光合作用的天线色素吸收光能。叶绿素b比叶绿素a多一个羰基,因此更容易溶于极性溶剂。它的颜色是黄绿色,主要吸收蓝紫光。
  • 王沙飞王沙飞(1964年10月-),河北张家口人,中国工程院院士,在中国人民解放军战略支援部队某研究所工作,从事军队信号处理技术等专业。