Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Viết chương trình C không kết thúc khi nhấn Ctrl+C


Phần này xem cách viết chương trình C không bị kết thúc bằng Ctrl+C.

Ctrl+C tạo ngắt bàn phím (keyboard interrupt), dừng tiến trình hiện tại. Ở đây khi nhấn Ctrl+C, in thông báo rồi tiếp tục chạy. Dùng kỹ thuật xử lý tín hiệu (signal handling) trong C. Ctrl+C tạo tín hiệu SIGINT. Các tín hiệu khác:

Tín hiệu
Mô tả
SIGABRT
Kết thúc bất thường
SIGFPE 
Ngoại lệ số thực (chia cho 0)
SIGILL 
Lệnh không hợp lệ
SIGINT 
Yêu cầu chú ý tương tác gửi đến chương trình
SIGSEGV 
Truy cập bộ nhớ không hợp lệ
SIGTERM 
Yêu cầu kết thúc gửi đến chương trình


Dùng hàm thư viện chuẩn signal() xử lý tín hiệu.

Ví dụ mã

#include <stdio.h>
#include <signal.h>

void sigint_handler(int signum) { // Handler cho SIGINT
    // Reset handler bắt SIGINT lần sau
    signal(SIGINT, sigint_handler);
    printf("Không thể dừng bằng Ctrl+C \n");
    fflush(stdout);
}

main() {
    signal(SIGINT, sigint_handler);
    while(1) { // vòng lặp vô tận
    }
}

Kết quả

Không thể dừng bằng Ctrl+C
Không thể dừng bằng Ctrl+C