You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows C运行时signal函数的信号处理函数应返回什么值?

Windows CRT signal函数中处理函数的返回值说明

针对Windows C运行时库(CRT)的signal函数:

void __cdecl *signal(int sig, int (*func)(int, int));

其注册的信号处理函数func的返回值规则如下:

  • 处理函数完成信号处理后,应返回传入的信号编号(即第一个参数sig),CRT会基于此继续执行该信号的默认处理流程(如果适用)。
  • 若要跳过后续的默认信号处理,可返回SIG_ERR,不过这种用法在MSVC实现中并不常见,更多是为了兼容C标准的设计。

虽然微软官方文档未明确标注这一点,但该返回值逻辑是遵循C标准的约定——C标准中信号处理函数的返回值用于指定后续的信号处理策略,MSVC作为标准兼容实现沿用了这一规则。需要注意,若返回非信号编号或SIG_ERR以外的值,可能会触发未定义行为。

内容的提问来源于stack exchange,提问作者pepece

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:35:22