gpt4 book ai didi

linux - 在 Linux 中链接信号处理程序的正确方法?

转载 作者:太空狗 更新时间:2023-10-29 12:12:50 27 4
gpt4 key购买 nike

我有几个信号处理程序,我正在使用它们来干净地退出我的程序,并且我想通过链接信号处理程序调用来很好地处理任何其他 Hook 它们的东西。我在手册页中使用 sigaction 来表示它不再是首选。

查看 sigaction 结构,其中指定了信号掩码等,以及几个标志。调用当前安装的处理程序以便将所有这些选项都考虑在内的“正确”方法是什么?

最佳答案

答案是“这取决于”:信号处理程序做什么:

  • 许多人的第一 react 是信号处理程序将用于处理 SIGINT 等,并彻底终止程序。
  • 另一方面,存在(或多或少)良性信号,例如 SIGWINCH(您希望停止您的程序)。

在“干净地终止一个程序”中,可能没有空间让其他程序做一些有用的事情。例如,建议的链式处理程序可能会关闭您依赖的文件。因此,您必须首先充分了解其他处理程序的作用。

如果信号处理程序在后一类中,只需更新应用程序可以测试的变量,那么信号处理程序函数 只是另一个函数。当您调用 signal 将信号与函数相关联时,它会返回前一个处理程序(可能是神奇值之一,例如。SIG_DFLSIG_IGN )。如果你保存它,就可以检查它是否不是那些,并且(大概)是一个真正的功能。调用那个函数会继续执行,就好像它是您当前信号处理程序的一部分一样。

这不是一个新想法(我在 1990 年代后期使用过它),并且偶尔会被讨论:

当然还有:

关于linux - 在 Linux 中链接信号处理程序的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36044772/

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