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