Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mengendalikan Acara Ctrl-C dengan Anggun dalam C ?

Bagaimana Mengendalikan Acara Ctrl-C dengan Anggun dalam C ?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-11 01:47:02197semak imbas

How to Gracefully Handle Ctrl-C Events in C  ?

Menangkap Acara Ctrl-C dalam C

Dalam C , menangkap acara Ctrl-C (SIGINT) adalah penting untuk mengendalikan penamatan program yang anggun. Pustaka isyarat menyediakan mekanisme yang mudah untuk ini, tetapi kebolehpercayaannya berbeza-beza merentas pelaksanaan yang berbeza.

Untuk memastikan gelagat yang konsisten, anda disyorkan untuk menggunakan fungsi sigaction. Berikut ialah versi semakan kod Tom menggunakan sigaction:

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

int main(int argc, char** argv) {

    struct sigaction sigIntHandler;

    sigIntHandler.sa_handler = my_handler;
    sigemptyset(&sigIntHandler.sa_mask);
    sigIntHandler.sa_flags = 0;

    sigaction(SIGINT, &sigIntHandler, NULL);

    pause();

    return 0;
}

Kod ini mentakrifkan pengendali isyarat, my_handler, yang mencetak mesej dan keluar dari program apabila isyarat SIGINT (Ctrl-C) diterima. Fungsi sigaction mendaftarkan pengendali untuk isyarat SIGINT dan menetapkan bendera yang diperlukan untuk kelakuan yang betul.

Kini, apabila program berjalan dan Ctrl-C ditekan, ia akan menangkap isyarat dan memanggil pengendali, yang seterusnya mencetak mesej yang sesuai dan menamatkan program dengan anggun.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Acara Ctrl-C dengan Anggun 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