Namespaces
Variants

sig_atomic_t

From cppreference.net
定义于头文件 <signal.h>
typedef /* 未指定 */ sig_atomic_t ;

一种整数类型,即使在信号引起的异步中断情况下,也能作为原子实体进行访问。

示例

#include <signal.h>
#include <stdio.h>
volatile sig_atomic_t gSignalStatus = 0;
void signal_handler(int status)
{
    gSignalStatus = status;
}
int main(void)
{
    /* 安装信号处理程序 */
    signal(SIGINT, signal_handler);
    printf("SignalValue:    %d\n", gSignalStatus);
    printf("Sending signal: %d\n", SIGINT);
    raise(SIGINT);
    printf("SignalValue:    %d\n", gSignalStatus);
}

可能的输出:

SignalValue:    0
Sending signal: 2
SignalValue:    2

参考文献

  • C17 标准 (ISO/IEC 9899:2018):
  • 7.14/2 信号处理 <signal.h> (页码: 194-195)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.14/2 信号处理 <signal.h> (页: 265)
  • C99标准(ISO/IEC 9899:1999):
  • 7.14/2 信号处理 <signal.h> (页: 246)
  • C89/C90 标准 (ISO/IEC 9899:1990):
  • 4.7 信号处理 <signal.h>

参见

为特定信号设置信号处理程序
(函数)
C++ 文档 关于 sig_atomic_t