首頁 >後端開發 >C++ >在 C 中處理 Ctrl-C 事件的最可靠方法是什麼?

在 C 中處理 Ctrl-C 事件的最可靠方法是什麼?

原創
2024-11-15 17:26:03859瀏覽

What's the most reliable way to handle Ctrl-C events in C  ?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn