Signals
什麼是信號陷阱?
信號是程序之間的通信方式,但我有一些問題什麼是信號陷阱?陷阱與作業系統中的信號有什麼關係?
有時一個例子勝過一千字:這段 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 信號,通常它會終止,但在這種精確的情況下,它讓你有可能在終止之前做一些事情。