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

Chương trình C không bị treo khi nhấn Ctrl+Z

Ctrl+Z và Ctrl+C

  • Ctrl+C: Gửi tín hiệu SIGINT, dừng chương trình sau khi hoàn tất I/O. Có thể xử lý bằng signal().
  • Ctrl+Z: Gửi tín hiệu SIGTSTP, tạm dừng tiến trình ngay lập tức. Mạnh hơn SIGINT, cũng có thể xử lý.

Ý tưởng

Viết chương trình bỏ qua Ctrl+Z: khi nhận SIGTSTP, in thông báo thay vì tạm dừng.

Mã nguồn C

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

void signalhandler(int sig_num) {
    signal(SIGTSTP, signalhandler);  // đăng ký lại handler
    printf("Không thể tạm dừng bằng Ctrl+Z\n");
}

int main() {
    int a = 1;
    signal(SIGTSTP, signalhandler);
    while (a) { }  // vòng lặp vô tận
    return 0;
}

Kết quả

Chương trình chạy vô tận, nhấn Ctrl+Z sẽ in: "Không thể tạm dừng bằng Ctrl+Z"