【发布时间】:2015-06-01 06:07:10
【问题描述】:
当我无法控制的事情发生故障并且程序需要退出时,我需要捕获 SIGABRT, SIGSEGV and SIGILL 以向用户显示适当的严重错误消息。
但是我的程序做了很多实时计算,所以性能很重要。
signal() (http://www.cplusplus.com/reference/csignal/signal/) 是否会导致任何performance loss(某种持续监控?)或根本不会(仅在发生异常时触发,否则不会丢失性能)。
编辑:我的软件在 Windows(7 及更高版本)和 OS X(10.7 及更高版本)上运行。
【问题讨论】:
-
在传递信号时调用信号处理程序,AFAIK 没有现代操作系统为此使用轮询。如果您需要更好地理解底层机制,我建议您好好阅读
Advanced Programming in the Unix Environment... -
答案可能在很大程度上取决于环境。所以你可能想告诉我们你的程序使用的操作系统、编译器和其他相关的东西。
-
我的软件在 Windows(7 及更高版本)和 OS X(10.7 及更高版本)上运行
标签: c++ c exception signals segmentation-fault