提问人:Sergio 提问时间:1/10/2020 更新时间:11/18/2023 访问量:2064
如何正确初始化sigset_t
How to correctly initialize sigset_t
问:
众所周知,如果需要重置一个变量,就足够了sigset_t
sigemptyset(&my_ss);
我想知道是否有一种标准方法可以初始化此类变量以将其设置为空(即就好像用户只是使用上面显示的方法重置了它一样)。也许是某种类似于 pthread API 的宏。例如
static sigset_t trackedSignals = SIGSET_INITIALIZER;
在 Linux 系统上,用作此类初始值设定项显然就足够了,但它可以在任何地方工作吗?因为正如我所看到的,POSIX在定义这种类型方面非常少:{0}
sigset_t
[CX] 用于表示信号集的对象的整数或结构类型。
因此,严格来说,不必将此对象初始化为语义上的“空”。{0}
答:
-2赞
user16217248
11/18/2023
#1
根据 GNU 文档,最可移植的方法是根本不初始化内联:sigset_t
为了便于移植,请仅使用本节中描述的函数来初始化、更改和检索对象中的信息,不要尝试直接操作它们。
sigset_t
公认的和最可移植的做法是使用 初始化类型。例如,如果有,则应调用程序的入口点。sigemptyset()
static sigset_t trackedSignals;
sigemptyset(&trackedSignals);
下一个:如何正确初始化sigset_t
评论
sigset_t ss = { 0 };
SIGSET_INITIALIZER