ฉันกำลังพัฒนาแอปพลิเคชันและฉันต้องการพิมพ์สถิติรันไทม์บางส่วนไปยังคอนโซลตามต้องการ killและสัญญาณมาถึงใจของฉันทันที
การอ่านสัญญาณ Unixบน Wiki SIGINFOดูเหมือนจะเป็นไปได้เพราะ:
- มันมีไว้สำหรับวัตถุประสงค์เหล่านี้
- ไม่ยุติกระบวนการหากไม่มีการใช้งานตัวจัดการสัญญาณ (ตรงกันข้ามกับ
SIGUSRx- ดูที่นี่ )
อย่างไรก็ตามโดยการตรวจสอบผลลัพธ์ของkill -lดูเหมือนว่าเซิร์ฟเวอร์ของฉันไม่ได้ใช้สัญญาณนี้
คำถามของฉันคือ:
- ทำไม
SIGINFOระบบของฉันถึงหายไป มันหายไปกับระบบ GNU Linux ทั้งหมดหรือไม่? - มีวิธีง่าย ๆ (เช่นไม่มีเคอร์เนล / glibc recompilation) เพื่อเปิดใช้งานสัญญาณนี้หรือไม่? ถ้าไม่มีสิ่งใดจะเป็นวิธีที่ยาก?
- ฉันสามารถใช้สัญญาณทางเลือกใดเพื่อจุดประสงค์ของฉันที่จะไม่ทำให้เกิดผลข้างเคียงใด ๆหากไม่ได้รับการจัดการโดยกระบวนการเป้าหมาย (ฉันไม่คิดเลยเพราะฉันไม่สามารถหาสัญญาณอื่นที่เหมาะสมในคู่มือของglibc )
Linux metainfo:
Linux whatever 3.18.2-2-ARCH #1 SMP PREEMPT Fri Jan 9 07:37:51 CET 2015 x86_64 GNU/Linux
อัปเดต:ฉันยังคงค้นหาข้อมูลเพิ่มเติมว่าทำไมสัญญาณนี้จึงถูกแยกแบบมีเงื่อนไขจากระบบอื่นที่ไม่ใช่ BSD (ดูความคิดเห็นด้านล่าง) สัญญาณดูเหมือนจะค่อนข้างมีประโยชน์สำหรับวัตถุประสงค์หลายอย่างดังนั้นมันยากสำหรับฉันที่จะเชื่อว่ามันเป็นเพียงเรื่องของความตั้งใจ - ดังนั้นสิ่งที่ showstopper จริงของสัญญาณนี้จะมีอยู่บน Linux?
ddใน Mac ของฉัน ^Tระหว่างddการดำเนินการไม่ได้ทำอะไรบนเครื่อง Linux - ฉันจะอัปเดตคำถามตาม
^Tปรากฏในการส่งออกของstty -a?