ความแตกต่างระหว่าง ^ S และ ^ Z ภายในเทอร์มินัลคืออะไร


6

เมื่อใช้จำลอง terminal, ใครสามารถหยุดโปรแกรมที่กำลังทำงานอยู่กับทั้งหรือCTRL-Z CTRL-Sความแตกต่างระหว่างตัวควบคุมเหล่านี้คืออะไร?


คำตอบ:


4

เป็นความแตกต่างระหว่างการกระทำ "หยุด" และ "หยุด" กับเทอร์มินัล

การหยุดเอาต์พุตด้วย Ctrl-S ไม่ทำให้กระบวนการหยุดทำงาน แต่จะหยุดเอาต์พุตไปที่เทอร์มินัล (กลับมาทำงานกับ Ctrl-Q / "start")

การหยุดโปรเซสด้วย Ctrl-Z จะหยุดการทำงานจริงและทำให้กระบวนการอยู่ในสถานะที่แตกต่างจาก ps (สถานะ "T") ดำเนินการต่อกับ "fg" หรือ "bg" เพื่อดำเนินการต่อในพื้นหน้าหรือพื้นหลังตามลำดับ


rather it just stops output to the terminal- โดยทั่วไปจะหยุดแอปพลิเคชันเป็นผลข้างเคียงชั่วคราว
Eugene Yarmash

หากแอปพยายามอ่านจาก / เขียนไปยังเทอร์มินัลแอปจะหยุดชั่วคราวใช่ ถ้าไม่แอปยังคงทำงานอยู่ นี่เป็นหนึ่งในความแตกต่างที่สำคัญระหว่างสองวิธี
Phil

Sidenote: เชลล์จำนวนมากสนับสนุนCtrl-Y เพื่อ
sehe

... หรือ "บล็อก" แม่นยำยิ่งขึ้น
minmaxavg

3

CTRL- Zส่งSIGSTOPสัญญาณซึ่งบังคับให้โปรแกรมหยุด

กับ

fg

หรือ

bg

คุณสามารถส่งSIGCONTและเริ่มในด้านหน้าหรือพื้นหลัง

CTRL- Sเพียงหยุดการส่งข้อมูลไปยังเทอร์มินัล ( XOFF) คุณสามารถเปิดใช้งานได้อีกครั้งด้วยCTRL- Q. ( XON)


การแก้ไขเล็กน้อย: Control-Z ส่ง SIGTSTP ไม่ใช่ SIGSTOP ความแตกต่างที่สำคัญระหว่างพวกเขาคือโปรแกรมสามารถตรวจจับหรือละเว้น SIGTSTP แต่ไม่ใช่ SIGSTOP โปรแกรมอาจจับ TSTP และดำเนินการล้างข้อมูลก่อนที่จะหยุดการประมวลผล แต่ STOP ทำให้กระบวนการหยุดโดยไม่ต้องแจ้งให้ทราบล่วงหน้า
Chris หน้า
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.