gpt4 book ai didi

c - sigaction 只处理一次信号

转载 作者:太空宇宙 更新时间:2023-11-04 00:45:48 25 4
gpt4 key购买 nike

有没有办法用sigaction结构和函数只捕获一次信号?更具体地说,我想简单地重置为默认特定信号 (SIGINT)。是否有可能在处理程序中实现这一点?

编辑

所以,这样的事情是正确的:

void sig_int(int sig)
{
printf(" -> Ctrl-C\n");
struct sigaction act;
act.sa_handler = SIG_DFL;

if(sigaction(SIGINT, &act, NULL) < 0)
{
exit(-1);
}

}

int main()
{
struct sigaction act;
act.sa_handler = sig_int;

if(sigaction(SIGINT, &act, NULL) < 0)
{
exit(-1);
}

while(1)
{
sleep(1);
}

return 0;
}

最佳答案

The standard SA_RESETHAND flag ,在 struct sigactionsa_flags 成员中设置,正是这样做的。

在指定您的 SIGINT 处理程序时设置该标志,处理程序将在进入时重置为 SIG_DFL。

关于c - sigaction 只处理一次信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40367151/

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