更新:整个问题都是坏问题,这是我的c ++代码中的语法错误.
在Linux上我发现了
#define _NSIG 64
Run Code Online (Sandbox Code Playgroud)
in asm-generic/signal.h,但我认为包括那将不是一个真正符合标准的解决方案.
signal.hglibc中使用了这个_NSIG定义,但它隐藏在include-define-undef-ifdef和类似的预处理器命令的复杂结构之后,并且它不是简单后的可见符号#include <signal.h>.
我只是想找到一种方法来找到我能给出的最大值,sigaction以及类似的信号处理api调用,包括实时信号.它有可能吗?
POSIX.1-2001标准要求定义SIGRTMIN和SIGRTMAX.在linux上,它们是使用_NSIG定义的.
要符合POSIX标准,请使用上述定义而不是直接使用 _NSIG
#include <stdio.h>
#include <signal.h>
int main() {
printf("%lu\n", SIGRTMAX);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在使用时编译,在我的系统上打印64 gcc main.cpp