请教唐:SIGEV_SIGNAL怎么用?

唐先生:你好,我在《xtang,问你一个关于时间的问题 》一文中见你介绍用SIGEV_SIGNAL通知进程,在Signal Handler进行处理,关于这方面能否给介绍一下。
我有一个程序,使用了中断服务,当我正常退出时,先停止中断服务程序,在退出程序,不会出错误;当我用Ctrl+c停止时,或用kill停止进程时,系统就死机了。我想应该是当程序停止时中断服务程序未退出,由于硬件的触发,中断在不停的触发,造成系统死机,不知是否。我应怎么办?
如果SIGEV_SIGNAL消息能够在退出时通知我,我就有时间终止中断服务,我的问题就解决了。

可以通过signal函数实现:简单例子如下:
注册处理函数:
signal( SIGINT, MyHandler ); //Ctrl C 时会触发SIGINT信号
signal( SIGTERM, MyHandler ); //slay yourprogram时会触发SIGTERM信号

void MyHandler( int sig_number )
{
//处理你的中断问题就可以了
}

具体可以参考帮助里关于signal的介绍。或者查查unix方面对singal的处理。

谢谢wsforever;kill程序解决了。如果使用远程调试工具,在windows环境下进行编译,调试。调试运行,退出时程序也是非正常退出,程序还是出问题,请问此时应该用什么信号处理?

不清楚,你可以把所有的Signal都注册了,然后在MyHandler里打印捕捉到的sig_number 不就知道了?