众所周知,如果需要重置
sigset_t
变量,则只需
sigemptyset(&my_ss);
我想知道是否有一种标准方法如何初始化此类变量以将其清空(即,就好像用户刚刚使用上面所示的方法重置了它一样)。也许是某种类似于 pthread API 中的宏。例如
static sigset_t trackedSignals = SIGSET_INITIALIZER;
在 Linux 系统上,使用
{0}
作为这样的初始化器显然就足够了,但是它在任何地方都适用吗?因为据我所知,POSIX 很少定义这种类型:
sigset_t
[CX] 用于表示信号集的对象的整数或结构类型。
因此,严格来说,
{0}
不必将此对象初始化为语义上的“空”。
根据GNU文档,最可移植的方法是不初始化
sigset_t
内联:
为了可移植性,仅使用本节中描述的函数来初始化、更改和检索来自
对象的信息 - 不要尝试直接操作它们。sigset_t
例如,如果您有
static sigset_t trackedSignals;
,那么您应该在程序的入口点调用 sigemptyset(&trackedSignals);
。