gpt4 book ai didi

ios - 如何在 iOS 上获取当前信号处理程序?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:41:22 31 4
gpt4 key购买 nike

您好,我需要获取使用此方法设置的当前信号处理程序:

signal(SIGSEGV, handler);

怎么做?

最佳答案

不幸的是,C 标准没有预见到读取处理程序的当前值。

还好signal()更改处理程序时返回以前的值。因此,您可以冒一点风险:

typedef void (*sighandler_t)(int);  /* for convenience */

sighandler_t current_handler;
current_handler = signal(SIGSEGV, SIG_IGN); /* (1) */
signal (SIGSERV, current_handler); /* (2) */

有两个风险:

  • 可能存在(非常不可能的)错误导致 signal() 返回 SIG_ERR。然后你将永远失去当前的处理程序!根据上面的 iOS 手册页,根据您感兴趣的信号值,不满足错误条件。
  • 如果 SIGSEGV 在 (1) 和 (2) 之间产生,您将不会拦截它。但是,从这两个语句来看,它们不太可能触发分段违规(SIGSEGV)

关于ios - 如何在 iOS 上获取当前信号处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28529257/

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