☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

避免在异步信号处理函数中使用非异步信号安全函数

15.2 ID_sig_nonAsyncSafeCall
目录 › next › previous

不处理共享数据也不会影响程序状态的函数,以及不会被信号中断的函数称为“异步信号安全”函数,在异步信号处理函数中只应使用这种函数。

示例:

#include <stdio.h>
#include <signal.h>

void handler(int signum) {
    printf("....");          // Non-compliant
}

int main() {
    signal(SIGINT, handler);
    printf("....");
}

printf 不是异步信号安全函数,例中两个 printf 的输出结果可能会交织在一起,甚至会产生运行时错误。

相关

ID_sig_dataRaces ID_dataRaces

依据

ISO/IEC 9899:1999 7.14.1.1(5)-undefined ISO/IEC 9899:2011 7.14.1.1(5)-undefined

参考

SEI CERT SIG30-C
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.