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

Bagaimana Mengendalikan Acara Ctrl-C dengan Anggun dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-11-11 01:47:02
asal
264 orang telah melayarinya

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;
}
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan