以下是我的場景的一個簡化例子(這看起來很常見);C++參考函數裏面的函數
#include <signal.h>
void doMath(int &x, int &y);
void signal_handler(int signal);
int main() {
signal (SIGINT,signal_handler);
int x = 10;
int y;
doMath(x,y);
while(1);
return 0;
}
void doMath(int &x, int &y) {
for(int y=0; y<=x; y++) {
cout << y << endl;
}
return;
}
void signalHandler(int signal){
doMath(x,y);
exit(1);
}
這個基本的程序在屏幕上打印1到10,然後掛在那裏,直到按下CTRL + C。在這一點上,我想要doMath()函數再次運行。我可以看到發生這種情況的唯一方法是,如果我將x和y傳遞給signalhandler(),那麼它可以將它們傳遞到doMath(),並且還可以引用doMath()函數。
它我的實際程序有兩個doMath()函數和更多的變量,我想最後轉儲的變量值。因此,將所有這些變量傳遞給signalHandler然後傳遞給兩個函數似乎是一種低效的方式。有沒有其他的方法呢?
如何設置程序,使ctrl-c不中斷它,並像普通字符一樣閱讀它? – 2012-07-28 14:24:12
使用ctrl-c有什麼意義?爲什麼不讓他們按回車? – 2012-07-28 14:29:30
那麼在稍後的日子,程序會做的更多,所以它必須在CTRL + C上(就像在程序被殺的時候一樣),我想在終止點處進行最後的值轉儲 – jwbensley 2012-07-28 14:29:32