C 中可靠的Ctrl-C 處理
問題:
問題:我們如何優雅地捕捉C 中的Ctrl-C 事件?
回應:#include <signal.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> void my_handler(int s) { printf("Caught signal %d\n", s); exit(1); // or perform other necessary actions } int main() { struct sigaction sigIntHandler; sigIntHandler.sa_handler = my_handler; sigemptyset(&sigIntHandler.sa_mask); sigIntHandler.sa_flags = 0; sigaction(SIGINT, &sigIntHandler, NULL); pause(); // block the main thread until a Ctrl-C signal is received return 0; }雖然使用訊號是一種常見的方法,但它在不同的實作中並不總是可靠的。更穩健的方法建議使用 sigaction。 以下是根據 Tom 的範例修改的程式碼:在此修改後的程式碼中,我們使用 sigaction 註冊訊號處理函數 my_handler。當收到 Ctrl-C (SIGINT) 訊號時執行此函數。透過使用 sigaction,我們可以更好地控制訊號處理機制,使我們的事件擷取更加可靠。
以上是在 C 中處理 Ctrl-C 事件的最可靠方法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!