ในการตรวจสอบระบบอะไรคือความแตกต่างระหว่าง Kill Process และ End Process?


14

เมื่อฉันต้องการที่จะฆ่ากระบวนการผ่านการตรวจสอบระบบฉันนำเสนอด้วยวิธีที่รวดเร็ว 2 วิธีฆ่ากระบวนการและกระบวนการสิ้นสุด ความแตกต่างระหว่างสองสิ่งนี้คืออะไร?

คำตอบ:


9

ตามคู่มือการตรวจสอบระบบคุณควรใช้ "กระบวนการสิ้นสุด" และเฉพาะในกรณีที่ล้มเหลวใช้ "กระบวนการฆ่า":

โดยปกติคุณจะยุติกระบวนการเฉพาะในกรณีที่คุณไม่สามารถจบกระบวนการตามปกติดังที่อธิบายไว้ในการสิ้นสุดกระบวนการ

ในระดับเทคนิคสิ่งนี้ทำให้ฉันคิดว่า End Process ส่ง SIGQUIT ซึ่งอนุญาตให้กระบวนการดักจับและทำการล้างถ้าจำเป็น แต่ถ้าล้มเหลว Kill Process ควรส่ง SIGKILL ซึ่งควรยุติกระบวนการอย่างรุนแรงโดยไม่มีโอกาสกู้คืน ใช้เท่าที่จำเป็น!


6
SIGTERM เป็นวิธี "สุภาพ" ในการปิดโปรแกรมซึ่งเป็นสิ่งที่ "กระบวนการสิ้นสุด" ส่ง gnu.org/software/libc/manual/html_node/Termination-Signals.html
Rick

9

ผมอยากรู้มากเกินไปดังนั้นฉันเพียงแค่เรียกดูผ่านรหัสแหล่งที่มาและพบว่าที่ด้านล่างในapplication.cpp มีมากกว่ารหัสนี้ แต่ฉันคิดว่าสิ่งเหล่านี้มีความสัมพันธ์กับตัวเลือกอย่างน้อยสำหรับการตรวจสอบระบบ 3.8.2.1 ถึง 3.19.3:

  • หยุดกระบวนการ = SIGSTOP ( หยุดสัญญาณให้คุณดำเนินการต่อในภายหลังด้วย SIGCONT ไม่ฆ่ากระบวนการ)
  • End Process = SIGTERM ( สัญญาณการเลิกจ้างวิธีที่ถูกต้องแอปพลิเคชันสามารถสกัดสัญญาณนี้และปิดการทำงานเช่นการล้างไฟล์ชั่วคราว)
  • Kill Process = SIGKILL ( ฆ่าสัญญาณมากใช้เฉพาะในกรณีที่ SIGTERM ใช้งานไม่ได้จะไม่ทำการปิดระบบ)

ดูคำถามนี้เกี่ยวกับ Quora เกี่ยวกับสัญญาณ SIGINT, SIGTERM, SIGKILL และ SIGSTOPสำหรับคำอธิบายที่ดีเกี่ยวกับสัญญาณฆ่า / ออก / ปิด / ปิดทั้งหมดและความแตกต่างของพวกเขา

ไฮไลต์ซอร์สโค้ด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.