在多线程环境中不可使用 signal 函数
16.9 ID_signalInMultiThreading
在多线程环境中使用 signal 函数会导致标准未定义的行为。
示例:
#include <signal.h>
#include <threads.h>
void handler(int);
int thread(void* param) {
signal(SIGINT, handler); // Non-compliant, undefined behavior
....
}
例中 thread 是线程函数,C11 标准指明在多线程环境中使用 signal 函数会导致未定义的行为。
相关
依据
ISO/IEC 9899:2011 7.14.1.1(7)-undefined