c - SIG_IGN 宏定义中的数字 1 是什么意思?

标签 c linux sigpipe

#define SIG_IGN     (void (*)(int))1
#define SIG_HOLD    (void (*)(int))5
#define SIG_ERR     ((void (*)(int))-1)

我知道 (void (*)(int)) 是什么意思:将 unknown_name 转换为指向返回 void 的函数 (int) 的指针。

但是下面的1是什么意思呢?

最佳答案

使用常量是为了将其与有效的函数指针区分开来。它本身没有任何意义(除了与众不同)。

例如:

#define SIG_DFL ((__sighandler_t)0)     /* default signal handling */
#define SIG_IGN ((__sighandler_t)1)     /* ignore signal */
#define SIG_ERR ((__sighandler_t)-1)    /* error return from signal */

这些常量值都不是您可以调用的有效函数地址。因此,它们作为特殊值非常有用,可用于说明如何处理信号。

顺便说一下,POSIX 没有提到这些常量 -1 , 01 ,宁愿只说符号常量(无论如何在预期的地方): <signal.h> .

进一步阅读:

关于c - SIG_IGN 宏定义中的数字 1 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35105452/

相关文章:

写入数据报套接字是否可以引发 SIGPIPE?

c - 如何在Linux中使用C检测系统是否要待机

init ELF 可执行文件的 C 文件?

linux - ubuntu utf-8 转换器脚本

linux - 如何判断 Unix 管道中的下游进程是否已崩溃

c++ - 如何确保 popen()ed 进程在退出时运行析构函数?

c - 遍历 C 中的 char 数组

c - 通过堆栈推送的指针引用传递

c - 使用输入文件进行调试 OS X

linux - 模拟 netcat -e