gpt4 book ai didi

c - 为信号分配特定的信号处理仪

转载 作者:行者123 更新时间:2023-11-30 17:56:06 25 4
gpt4 key购买 nike

我有一个关于 C 中信号的问题。我想为信号分配一些特定的ighandler。

我的职能是:

void searchOccurences(char **myString, char chr, int *occurences) {
/* I perform some search actions here
* at the end of this function *occurrence will contain the
* the number occurrences of chr in myString*/
}

我想将此函数分配给 SIGILL 信号(即非法指令信号),但我不能,因为 __sighandler_t 处理程序具有这种定义:

typedef void (*__sighandler_t) (int);

那么我怎样才能将我的功能分配给这个信号呢?我想做的事情有哪些替代解决方案?

谢谢:)

最佳答案

不要使用 SIGILL,这可能会掩盖真正的错误。 SIGUSR1 和 SIGUSR2 专门用于用户定义的信号。

抱歉,您无法传递其他信息,但它就在那里。您能做的最好的事情就是在发出信号之前将信息存储在全局中,但您必须确定事件的顺序,或者使用某种同步(例如互斥锁)。

顺便问一下,您是否知道许多 C 运行时库函数不是信号安全的?

关于c - 为信号分配特定的信号处理仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13801400/

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