为信号分配特定的sighandler

时间:2012-12-10 12:55:49

标签: c

我对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);

那么如何将此功能分配给此信号?我想做什么的替代解决方案是什么?

谢谢:)

1 个答案:

答案 0 :(得分:0)

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

对不起,您无法传递其他信息,但确实如此。您可以做的最好的事情是在发出信号之前将信息存储在全局中,但您必须确定事件序列,或使用某种同步,如互斥锁。

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