Rumah >pembangunan bahagian belakang >C++ >Apakah cara yang paling boleh dipercayai untuk mengendalikan acara Ctrl-C dalam C ?

Apakah cara yang paling boleh dipercayai untuk mengendalikan acara Ctrl-C dalam C ?

asal
2024-11-15 17:26:03890semak imbas

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

Pengendalian Ctrl-C yang boleh dipercayai dalam C

Soalan:

Bagaimana kita boleh menangkap dengan anggun acara Ctrl-C dalam C ?

Respons:

Walaupun menggunakan isyarat ialah pendekatan biasa, ia tidak selalu boleh dipercayai merentas pelaksanaan yang berbeza. Kaedah yang lebih mantap disyorkan menggunakan sigaction.

Berikut ialah kod yang diubah suai berdasarkan contoh Tom:

#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;
}

Dalam kod yang disemak ini, kami menggunakan sigaction untuk mendaftarkan fungsi pengendali isyarat, my_handler. Fungsi ini dilaksanakan apabila isyarat Ctrl-C (SIGINT) diterima. Dengan menggunakan sigaction, kami mendapat lebih kawalan ke atas mekanisme pengendalian isyarat, menjadikan penangkapan acara kami lebih dipercayai.

Atas ialah kandungan terperinci Apakah cara yang paling boleh dipercayai untuk mengendalikan acara Ctrl-C dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn