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ằngsignal(). - 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"