8
struct sigaction psa;
我已经启用的主要功能我的信号处理程序,如下图所示:启用信号处理程序
memset (&psa, 0, sizeof (psa));
psa.sa_handler = pSigHandler;
sigaction (SIGALRM, &psa, NULL);
sigaction(SIGVTALRM, &psa, NULL);
sigaction(SIGPROF, &psa, NULL);
我的信号处理程序是这样的:
static void pSigHandler(int signo){
printf("Pareint signum: %d", signo);// debug
switch (signo) {
case SIGALRM:
printf("P SIGALRM handler");//debug
break;
case SIGVTALRM:
printf("P SIGVTALRM handler");//debug
break;
case SIGPROF:
printf("P SIGPROF handler");//debug
break;
default: /*Should never get this case*/
break;
}
return;
}
现在我的问题对某些人来说可能很明显,为什么我在运行时没有看到打印的调试行?事实上,没有印刷任何东西。非常感谢你帮助我理解这一点。我在Linux上运行它,使用Eclipse进行编程。
我试图添加在fflush(标准输出);仍然没有打印出任何东西, 我在我的程序中注释了其他代码,所以它看起来与上面几乎相同,只是没有无限循环。有任何想法吗?谢谢汤姆。 – txs 2011-02-25 04:44:19
在我的代码示例中,fflush使打印与否之间存在差异。我想也许应用程序没有得到你的信号?你有没有试过我的?我认为这可能是未定义的行为,我放在底部的链接有一些信息,说明你只能在那里做某些事情......它应该在你系统的文档中。 – 2011-02-25 04:50:19
你也提到你删除了无限循环---如果不存在,代码将退出并且信号处理程序将会消失......您需要阻止并等待信号... – 2011-02-25 04:52:37