信号はプロセス間の通信方法ですが、信号トラップが何であるかについていくつかの質問があります。トラップはオペレーティングシステムのシグナルとどのような関係がありますか?
ベストアンサー1
時には千の言葉の価値がある例があります。このC ++コードは非常に単純な信号ハンドラを公開します。
void gracefullShutdown(int sigNum) {
// cleanup or do wathever you need to do in case of received signal(s)
// Terminate this executable
exit(sigNum);
}
int main(int argc, char* argv[]) {
signal(SIGINT , gracefullShutdown);
signal(SIGTERM , gracefullShutdown);
std::cout << "starting..." << std::endl;
while(1);
exit(EXIT_SUCCESS);
}
プログラムの実行中にCtrl + Cを押すと、LinuxカーネルはプログラムにSIGINTシグナルを送信し、通常終了しますが、この場合は終了する前に特定のタスクを実行できます。