Signals

什麼是信號陷阱?

  • March 15, 2016

信號是程序之間的通信方式,但我有一些問題什麼是信號陷阱?陷阱與作業系統中的信號有什麼關係?

有時一個例子勝過一千字:這段 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 信號,通常它會終止,但在這種精確的情況下,它讓你有可能在終止之前做一些事情。

引用自:https://unix.stackexchange.com/questions/270014