不暫停 Ctrl+Z 的 C 程式


在程式設計中,當程式出現故障並在終端編譯器中異常執行時,程式設計師有權顯式停止程式執行。為了顯式停止程式,使用者必須知道需要按下的正確鍵盤快捷鍵。

要終止程式碼塊的執行,可以使用兩種型別的鍵盤快捷鍵。

  • Ctrl+c - 用於停止程式的執行,它需要花費一些時間來完成 i/o 操作,然後暫停執行。它向程序傳送一個SIGINT訊號,該訊號將被終止。在某些語言中,有一些方法可以處理此SIGINT,例如 C 語言中的訊號函式。

  • Ctrl+z - 用於停止程式的執行,與該程序相關的所有任務都將關閉,並且執行將暫停。它向程序傳送一個SINTSTP訊號,該訊號雖然實現相同,但終止程式,但此訊號比其他訊號更強大。這也可以處理。

在這裡,我們將編寫一個能夠繞過 ctrl+z 呼叫的程式碼。並且程式不會被掛起,而是會列印“ctrl+z 無法掛起此程式碼”。

如上所述,可以在 C 程式語言中處理ctrl+z呼叫。當呼叫SINTSTP訊號來結束程式的程序時。我們將重新定義此訊號的作用,以便它不會終止程式碼並在使用時列印一行。

signal() 方法用於處理此類情況。

示例

 即時演示

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

輸出

// an infinite loop

更新於: 2019-09-19

1K+ 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.