如何正确初始化sigset_t

问题描述 投票:0回答:1

众所周知,如果需要重置

sigset_t
变量,则只需

    sigemptyset(&my_ss);

我想知道是否有一种标准方法如何初始化此类变量以将其清空(即,就好像用户刚刚使用上面所示的方法重置了它一样)。也许是某种类似于 pthread API 中的宏。例如

static sigset_t trackedSignals = SIGSET_INITIALIZER;

在 Linux 系统上,使用

{0}
作为这样的初始化器显然就足够了,但是它在任何地方都适用吗?因为据我所知,POSIX 很少定义这种类型:

sigset_t

[CX] 用于表示信号集的对象的整数或结构类型。

因此,严格来说,

{0}
不必将此对象初始化为语义上的“空”。

c linux unix signals posix
1个回答
0
投票

根据GNU文档,最可移植的方法是初始化

sigset_t
内联:

为了可移植性,仅使用本节中描述的函数来初始化、更改和检索来自

sigset_t
对象的信息 - 不要尝试直接操作它们。

例如,如果您有

static sigset_t trackedSignals;
,那么您应该在程序的入口点调用
sigemptyset(&trackedSignals);

© www.soinside.com 2019 - 2024. All rights reserved.