Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah `sigaction` Boleh Digunakan untuk Mengendalikan Peristiwa Ctrl-C dalam C ?

Bagaimanakah `sigaction` Boleh Digunakan untuk Mengendalikan Peristiwa Ctrl-C dalam C ?

Barbara Streisand
Lepaskan: 2024-11-15 03:41:02
asal
352 orang telah melayarinya

How Can `sigaction` Be Used to Handle Ctrl-C Events in C  ?

Menggunakan sigaction untuk Mengendalikan Peristiwa Ctrl-C dalam C

Untuk menangkap acara Ctrl-C dalam C dengan cekap, pendekatan yang paling boleh dipercayai ialah menggunakan 'sigaction' fungsi. Ia memberikan kawalan dan keserasian yang lebih besar daripada fungsi 'isyarat' mudah.

Melaksanakan sigaction memerlukan pendekatan berstruktur:

  1. Isytiharkan Struktur sigaction:
    Tentukan struktur 'sigaction' dinamakan 'sigIntHandler'.
  2. Tetapkan Pengendali Isyarat:
    Tetapkan alamat fungsi pengendali ('my_handler') kepada 'sigIntHandler.sa_handler'. Dalam fungsi pengendali, lakukan tindakan yang diingini apabila menerima isyarat.
  3. Initialize Signal Mask:
    Initialize 'sigIntHandler.sa_mask' kepada set isyarat kosong menggunakan 'sigemptyset'. Ini membolehkan pengendali bertindak balas kepada isyarat yang ditentukan tanpa menyekat orang lain.
  4. Tetapkan Bendera Tindakan Isyarat:
    Tetapkan 'sigIntHandler.sa_flags' kepada '0' untuk menggunakan pilihan lalai.
  5. Daftar Tindakan Isyarat:
    Gunakan 'sigaction' dengan isyarat 'SIGINT' dan struktur pengendali yang ditentukan ('sigIntHandler') untuk mendaftarkan tindakan isyarat.
  6. Jeda Pelaksanaan:
    Panggil 'pause()' untuk hentikan pelaksanaan program sehingga isyarat diterima.
  7. Contoh Kod:
    Kod yang diubah suai berikut daripada soalan menunjukkan penggunaan '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

Pendekatan ini menyediakan mekanisme yang teguh untuk mengendalikan peristiwa Ctrl-C dalam C , memastikan kebolehpercayaan dan kecekapan dalam pelbagai pelaksanaan.

Atas ialah kandungan terperinci Bagaimanakah `sigaction` Boleh Digunakan untuk Mengendalikan Peristiwa Ctrl-C 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