以下は、私のシナリオの単純化された例です (これは非常に一般的なようです)。
#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() 関数への参照も渡すことです。
私の実際のプログラムには 2 つの doMath() 関数とさらに多くの変数があります。変数値の最終的なダンプが必要です。したがって、これらすべての変数を signalHandler に渡してから 2 つの関数に渡すのは非効率的な方法のように思えます。これを回避する別の方法はありますか?