gpt4 book ai didi

c - 调用sigaction()时sa_sigaction设置为NULL是什么意思?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:41 27 4
gpt4 key购买 nike

下面的代码是做什么的?

struct sigaction saStruct;
saStruct.sa_flags = SA_NOCLDWAIT|SA_NODEFER|SA_SIGINFO;
saStruct.sa_sigaction = NULL;
sigemptyset(&saStruct.sa_mask);
sigaction(SIGCHLD, &saStruct, NULL);

特别是,sa_sigaction 设置为 NULL 是什么意思?这是表达更简单的东西的复杂方式吗?我在 sigaction man page 中找不到任何对此用法的引用.

我主要对 Linux (>= 2.6) 的答案感兴趣。

最佳答案

NULL 正好等同于SIG_DFL;不要依赖于此。

#define SIG_ERR  ((__sighandler_t) -1)  /* Error return.  */
#define SIG_DFL ((__sighandler_t) 0) /* Default action. */
#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */

SIG_DFL 等旨在分配给 sa_handler 成员,但是(同样,不要依赖于此)sa_handler在 Linux 上与 sa_sigaction union ,因此将 NULL 分配给 sa_sigaction 等同于将 SIG_DFL 分配给 sa_handler.

    union
{
/* Used if SA_SIGINFO is not set. */
__sighandler_t sa_handler;
/* Used if SA_SIGINFO is set. */
void (*sa_sigaction) (int, siginfo_t *, void *);
}
__sigaction_handler;
# define sa_handler __sigaction_handler.sa_handler
# define sa_sigaction __sigaction_handler.sa_sigaction

关于c - 调用sigaction()时sa_sigaction设置为NULL是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24079875/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com