Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C ที่ไม่ระงับเมื่อกด Ctrl+Z


ในการเขียนโปรแกรมเมื่อโปรแกรมทำงานผิดปกติและทำงานผิดปกติในเทอร์มินัลคอมไพเลอร์ โปรแกรมเมอร์มีอำนาจในการหยุดการทำงานของโปรแกรมอย่างชัดเจน ในการหยุดโปรแกรมอย่างชัดเจน ผู้ใช้ต้องทราบแป้นพิมพ์ลัดที่ถูกต้องซึ่งจำเป็นต้องกด

ในการยุติการเรียกใช้บล็อกโค้ด มีการใช้แป้นพิมพ์ลัดสองประเภท

  • 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