Computer >> 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

Trong Lập trình khi chương trình hoạt động không bình thường và chạy bất thường trong trình biên dịch đầu cuối, lập trình viên có quyền dừng chương trình chạy một cách rõ ràng. Để dừng chương trình một cách rõ ràng, người dùng phải biết phím tắt phù hợp cần được nhấn.

Để chấm dứt việc thực thi một khối mã, có hai loại phím tắt được sử dụng.

  • Ctrl + c - Nó được sử dụng để dừng thực hiện chương trình, mất một chút thời gian để hoàn thành các thao tác i / o và sau đó tạm dừng thực thi. Nó gửi một SIGINT báo hiệu cho quá trình bị kết thúc. Trong một số ngôn ngữ, có nhiều cách để xử lý SIGINT này như hàm tín hiệu trong C.

  • Ctrl + z - Nó được sử dụng để dừng quá trình thực thi chương trình, tất cả các tác vụ liên quan đến quá trình sẽ bị đóng lại và việc thực thi bị tạm dừng. Nó gửi một SINTSTP tín hiệu cho tiến trình kết thúc chương trình mặc dù việc thực hiện giống nhau nhưng tín hiệu này mạnh hơn so với các tín hiệu khác. Điều này cũng có thể được xử lý.

Ở đây, chúng tôi sẽ viết một mã có thể vượt qua lệnh gọi ctrl + z. Và thay vì bị tạm ngưng, chương trình sẽ in “ ctrl + z không thể tạm ngừng mã này ”.

Như đã thảo luận ở trên, ctrl + z cuộc gọi có thể được xử lý bằng ngôn ngữ lập trình C. Khi SINTSTP tín hiệu được gọi để kết thúc quá trình của chương trình. Chúng tôi sẽ xác định lại tín hiệu này hoạt động để tôi không kết thúc mã và in dòng khi được sử dụng.

Phương thức signal () được sử dụng để xử lý loại điều này.

Ví dụ

#include <stdio.h>
#include <signal.h>
void signalhandler(int sig_num){
   signal(SIGTSTP, signalhandler);
   printf("Cannot execute Ctrl+Z\n");
}
int main(){
   int a = 1;
   signal(SIGTSTP, signalhandler);
   while(a){
   }
   return 0;
}

Đầu ra

// an infinite loop