我对C中的信号有疑问。我想为信号分配一些特定的信号处理器。
我的功能是:
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);
那么如何将此功能分配给此信号?我想做什么的替代解决方案是什么?
谢谢:)
答案 0 :(得分:0)
不要使用可能掩盖真正错误的SIGILL。 SIGUSR1和SIGUSR2专门用于用户定义的信号。
对不起,您无法传递其他信息,但确实如此。您可以做的最好的事情是在发出信号之前将信息存储在全局中,但您必须确定事件序列,或使用某种同步,如互斥锁。
顺便提一下,您是否知道许多C运行时库函数不是信号安全的?