不暫停 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP