ในการเขียนโปรแกรมเมื่อโปรแกรมทำงานผิดปกติและทำงานผิดปกติในเทอร์มินัลคอมไพเลอร์ โปรแกรมเมอร์มีอำนาจในการหยุดการทำงานของโปรแกรมอย่างชัดเจน ในการหยุดโปรแกรมอย่างชัดเจน ผู้ใช้ต้องทราบแป้นพิมพ์ลัดที่ถูกต้องซึ่งจำเป็นต้องกด
ในการยุติการเรียกใช้บล็อกโค้ด มีการใช้แป้นพิมพ์ลัดสองประเภท
-
Ctrl+c − ใช้เพื่อหยุดการทำงานของโปรแกรม ใช้เวลาสักครู่ในการดำเนินการ i/o ให้เสร็จ จากนั้นจึงหยุดการดำเนินการชั่วคราว มันส่ง SIGINT ส่งสัญญาณไปยังกระบวนการที่ถูกยกเลิก ในบางภาษา มีวิธีจัดการกับ SIGINT . นี้ เช่นฟังก์ชั่นสัญญาณใน C.
-
Ctrl+z - ใช้เพื่อหยุดการทำงานของโปรแกรม งานทั้งหมดที่เกี่ยวข้องกับกระบวนการจะถูกปิดและการดำเนินการถูกระงับ มันส่ง SINTSTP ส่งสัญญาณไปยังกระบวนการที่ยุติโปรแกรมแม้ว่าการใช้งานจะเหมือนกัน แต่สัญญาณนี้มีประสิทธิภาพมากกว่าเมื่อเทียบกับตัวอื่น นอกจากนี้ยังสามารถจัดการได้
ในที่นี้ เราจะเขียนโค้ดที่จะสามารถอยู่เหนือการเรียก ctrl+z ได้ และแทนที่จะถูกระงับ โปรแกรมจะพิมพ์ว่า “ctrl+z ไม่สามารถระงับรหัสนี้ ”.
ตามที่กล่าวไว้ข้างต้น ctrl+z สามารถจัดการการโทรในภาษาการเขียนโปรแกรม C เมื่อ SINTSTP สัญญาณถูกเรียกใช้เพื่อสิ้นสุดกระบวนการของโปรแกรม เราจะกำหนดใหม่ว่าสัญญาณนี้ทำอะไรเพื่อที่ฉันจะไม่ยุติรหัสและพิมพ์บรรทัดเมื่อใช้
วิธี Signal() ใช้สำหรับจัดการกับสิ่งนี้
ตัวอย่าง
#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;
} ผลลัพธ์
// an infinite loop