代码之家  ›  专栏  ›  技术社区  ›  Chris Travers

在信号处理程序中写入结构成员的安全性

  •  0
  • Chris Travers  · 技术社区  · 6 年前

    请考虑以下示例:

    #include <stdio.h>
    
    struct int_seen {
        sig_atomic_t usr1;
        sig_atomic_t term;
        sig_atomic_t client_term;
    };
    
    static volatile struct int_seen interrupts;
    
    int main() {
        printf("Hello World");
        if (interrupts.term){
            return 1;
        }
        return 0;
    }
    

    1. 必须符合C89标准
    2. 是单线程/多进程

    我试过阅读C89标准,我所能看到的是,sig\u atomic\u t是我唯一可以使用的类型,而且它的大小只能保证至少是8位。我不知道这种用法是否安全。

    0 回复  |  直到 6 年前