首页 > 解决方案 > Linux 中的 sighandler_t typedef 语句?

问题描述

在 Linux 中学习 Signals 时,我遇到了这样的声明:

typedef void (*sighandler_t)(int);
sighandler_t signal (int signo, sighandler_t handler);

处理函数必须返回void,其原型的形式为:

void my_handler (int signo);

Linux 使用typedef, sighandler_t, 来定义这个原型。

当我看到有关功能的 Linux 手册页时,signal()它就在那里。

但我不明白typedef这里的陈述是什么意思。

谁能解释一下这是什么typedef sighandler_t意思?

标签: clinuxsignalstypedef

解决方案


这是一点 C 魔法,它说明了以下内容:

typedef void (*sighandler_t)(int);

有一种特殊的类型被称为sighandler_t是一个指向一个函数的指针,它接受一个整数参数并且不返回任何内容。

sighandler_t signal(int signo, sighandler_t handler);

有一个函数signal将一个整数命名signo和一个函数指针handler作为参数并返回一个函数指针。

字面意思是“typedef类型定义”,用于定义复杂类型的占位符——如函数指针或结构等。

函数指针的定义有点超出了这个问题的范围,但可以被认为是用户编写的命令,框架将调用它,而不知道该函数将是什么。


推荐阅读