Linux สนับสนุนทั้งสัญญาณที่เชื่อถือได้ของ POSIX (ต่อไปนี้คือ "สัญญาณมาตรฐาน") และสัญญาณ POSIX แบบเรียลไทม์
สัญญาณมาตรฐาน
Linux รองรับสัญญาณมาตรฐานที่ระบุไว้ด้านล่าง หมายเลขสัญญาณหลายตัวขึ้นอยู่กับสถาปัตยกรรมตามที่ระบุไว้ในคอลัมน์ "ค่า" (ในกรณีที่ได้รับค่าสามค่าค่าแรกจะเป็นค่าปกติสำหรับ alpha และ sparc ค่ากลางสำหรับ i386, ppc และ sh และค่าสุดท้ายสำหรับ mips
A - หมายถึงสัญญาณที่ขาดหายไปในสถาปัตยกรรมที่สอดคล้องกัน)
รายการในคอลัมน์ "Action" ของตารางระบุการกระทำเริ่มต้นสำหรับสัญญาณดังต่อไปนี้:
วาระ
การดำเนินการเริ่มต้นคือการยุติกระบวนการ
ign
การดำเนินการเริ่มต้นคือการละเว้นสัญญาณ
แกน
การดำเนินการเริ่มต้นคือการยุติกระบวนการและการถ่ายโอนข้อมูลหลัก
หยุด
การดำเนินการเริ่มต้นคือการหยุดกระบวนการ
ก่อนสัญญาณที่อธิบายไว้ในมาตรฐาน POSIX.1 เดิม
| สัญญาณ | ราคา | การกระทำ | คิดเห็น |
| หรือความตายของกระบวนการควบคุม | |||
| SIGINT | 2 | วาระ | ขัดจังหวะจากแป้นพิมพ์ |
| SIGQUIT | 3 | แกน | ออกจากแป้นพิมพ์ |
| SIGILL | 4 | แกน | คำสั่งที่ผิดกฎหมาย |
| SIGABRT | 6 | แกน | ยกเลิกสัญญาณจาก ทำแท้ง (3) |
| SIGFPE | 8 | แกน | ข้อยกเว้นจุดลอยตัว |
| SIGKILL | 9 | วาระ | ฆ่าสัญญาณ |
| SIGSEGV | 11 | แกน | การอ้างอิงหน่วยความจำไม่ถูกต้อง |
| SIGPIPE | 13 | วาระ | ท่อร้าว: เขียนไปยังท่อโดยไม่มีผู้อ่าน |
| SIGALRM | 14 | วาระ | สัญญาณตั้งเวลาจาก สัญญาณเตือนภัย (2) |
| SIGTERM | 15 | วาระ | สัญญาณการสิ้นสุด |
| SIGUSR1 | 30,10,16 | วาระ | สัญญาณที่ผู้ใช้กำหนด 1 |
| SIGUSR2 | 31,12,17 | วาระ | สัญญาณที่ผู้ใช้กำหนด 2 |
| SIGCHLD | 20,17,18 | ign | เด็กหยุดหรือยกเลิก |
| SIGCONT | 19,18,25 | ดำเนินการต่อหากหยุดลง | |
| SIGSTOP | 17,19,23 | หยุด | หยุดกระบวนการ |
| SIGTSTP | 18,20,24 | หยุด | หยุดพิมพ์ที่ tty |
| SIGTTIN | 21,21,26 | หยุด | ใส่ tty สำหรับกระบวนการพื้นหลัง |
| SIGTTOU | 22,22,27 | หยุด | เอาท์พุท tty สำหรับกระบวนการพื้นหลัง |
สัญญาณSIGKILL และSIGSTOP ไม่สามารถจับปิดกั้นหรือละเว้น
ถัดไปสัญญาณไม่ได้อยู่ในมาตรฐาน POSIX.1 แต่อธิบายไว้ใน SUSv2 และ SUSv3 / POSIX 1003.1-2001
| สัญญาณ | ราคา | การกระทำ | คิดเห็น |
| SIGPOLL | วาระ | เหตุการณ์ที่เป็นอันตราย (Sys V) พ้องของ SIGIO | |
| SIGPROF | 27,27,29 | วาระ | จับเวลาโปรไฟล์หมดอายุแล้ว |
| SIGSYS | 12,-,12 | แกน | อาร์กิวเมนต์ไม่ถูกต้องเป็นประจำ (SVID) |
| SIGTRAP | 5 | แกน | Trace / จุดพักกับดัก |
| SIGURG | 16,23,21 | ign | เงื่อนไขเร่งด่วนบนซ็อกเก็ต (4.2 BSD) |
| SIGVTALRM | 26,26,28 | วาระ | นาฬิกาปลุกเสมือนจริง (4.2 BSD) |
| SIGXCPU | 24,24,30 | แกน | เกินเวลาที่กำหนดของ CPU (4.2 BSD) |
| SIGXFSZ | 25,25,31 | แกน | เกินขีด จำกัด ของขนาดไฟล์ (4.2 BSD) |
ถึงและรวมถึง Linux 2.2 พฤติกรรมเริ่มต้นสำหรับSIGSYS, SIGXCPU, SIGXFSZ, และ (ในสถาปัตยกรรมอื่นนอกเหนือจาก SPARC และ MIPS)SIGBUS คือการยกเลิกกระบวนการ (โดยไม่มีการถ่ายโอนข้อมูลหลัก) (ใน Unices อื่น ๆ การกระทำเริ่มต้นสำหรับSIGXCPU และSIGXFSZ คือการยุติกระบวนการโดยไม่มีการถ่ายโอนข้อมูลหลัก) Linux 2.4 สอดคล้องกับข้อกำหนด POSIX 1003.1-2001 สำหรับสัญญาณเหล่านี้การสิ้นสุดกระบวนการด้วยการถ่ายโอนข้อมูลหลัก
ถัดไปสัญญาณอื่น ๆ
| สัญญาณ | ราคา | การกระทำ | คิดเห็น |
| SIGEMT | 7,-,7 | วาระ | |
| SIGSTKFLT | -,16,- | วาระ | ข้อผิดพลาดในกองซ้อนกัน coprocessor (ไม่ได้ใช้) |
| SIGIO | 23,29,22 | วาระ | ตอนนี้ I / O เป็นไปได้ (4.2 BSD) |
| SIGCLD | -,-,18 | ign | คำพ้องสำหรับ SIGCHLD |
| SIGPWR | 29,30,19 | วาระ | ไฟฟ้าขัดข้อง (ระบบ V) |
| SIGINFO | 29,-,- | คำพ้องสำหรับ SIGPWR | |
| SIGLOST | -,-,- | วาระ | ล็อกไฟล์หายไป |
| SIGWINCH | 28,28,20 | ign | สัญญาณปรับขนาดหน้าต่าง (4.3 BSD, ดวงอาทิตย์) |
| SIGUNUSED | -,31,- | วาระ | สัญญาณที่ไม่ได้ใช้ (จะเป็น SIGSYS) |
(สัญญาณ 29 คือSIGINFO / SIGPWR บน alpha แต่SIGLOST เกี่ยวกับ sparc)
SIGEMT ไม่ได้ระบุไว้ใน POSIX 1003.1-2001 แต่อย่างน้อยก็จะปรากฏใน Unices อื่น ๆ ส่วนใหญ่ซึ่งการดำเนินการดีฟอลต์โดยปกติแล้วจะเป็นการยกเลิกกระบวนการที่มีการถ่ายโอนข้อมูลหลัก
SIGPWR (ซึ่งไม่ได้ระบุไว้ใน POSIX 1003.1-2001) จะถูกละเลยโดยค่าเริ่มต้นใน Unices อื่น ๆ ที่ปรากฏอยู่
SIGIO (ซึ่งไม่ได้ระบุไว้ใน POSIX 1003.1-2001) โดยค่าเริ่มต้นจะถูกละเว้นใน Unices อื่น ๆ
สัญญาณเรียลไทม์
Linux รองรับสัญญาณแบบเรียลไทม์ตามที่กำหนดไว้ในส่วนขยายแบบเรียลไทม์ POSIX.4 (และตอนนี้รวมอยู่ใน POSIX 1003.1-2001) Linux สนับสนุนสัญญาณเวลาจริง 32 ตัวซึ่งมีหมายเลขตั้งแต่ 32 (SIGRTMIN) เป็น 63 (SIGRTMAX) (โปรแกรมควรอ้างอิงถึงสัญญาณเรียลไทม์โดยใช้สัญกรณ์SIGRTMIN+ n เนื่องจากช่วงของหมายเลขสัญญาณเวลาจริงแตกต่างกันไปใน Unices)
สัญญาณแบบเรียลไทม์ไม่มีความหมายที่กำหนดไว้ล่วงหน้า: สัญญาณทั้งแบบเรียลไทม์สามารถใช้สำหรับวัตถุประสงค์ที่กำหนดไว้ในแอ็พพลิเคชัน (โปรดทราบว่าการใช้ LinuxThreads ใช้สัญญาณเรียลไทม์สามตัวแรก)
การดำเนินการเริ่มต้นสำหรับสัญญาณเวลาจริงที่ไม่ได้รับการจัดการคือการยุติกระบวนการรับ
สัญญาณเรียลไทม์มีลักษณะเด่นดังนี้:
- หลายอินสแตนซ์ของสัญญาณเรียลไทม์สามารถเข้าคิวได้ ในทางตรงกันข้ามถ้าหลายอินสแตนซ์ของสัญญาณมาตรฐานจะถูกส่งไปในขณะที่สัญญาณถูกบล็อกอยู่ในปัจจุบันจะมีเพียงอินสแตนซ์เดียวเท่านั้นที่ถูกจัดคิว
- ถ้าสัญญาณถูกส่งโดยใช้sigqueue(2) สามารถส่งค่าประกอบ (ทั้งจำนวนเต็มหรือตัวชี้) ไปพร้อมกับสัญญาณ ถ้ากระบวนการรับที่สร้างตัวจัดการสัญญาณนี้โดยใช้SA_SIGACTION flag tosigaction(2) จากนั้นจะสามารถรับข้อมูลนี้ผ่านทาง si_value ฟิลด์ของ siginfo_t โครงสร้างที่ส่งผ่านเป็นอาร์กิวเมนต์ที่สองไปยังตัวจัดการ นอกจากนี้ si_pid และ si_uid เขตข้อมูลของโครงสร้างนี้สามารถใช้เพื่อขอรับ PID และ ID ผู้ใช้จริงของกระบวนการส่งสัญญาณ
- สัญญาณเรียลไทม์จะจัดส่งในใบสั่งซื้อที่ได้รับการรับรอง ส่งสัญญาณแบบเรียลไทม์หลายชนิดในประเภทเดียวกันตามลำดับที่ส่ง ถ้ามีการส่งสัญญาณเรียลไทม์ที่ต่างกันไปให้ดำเนินกระบวนการพวกเขาจะส่งเริ่มต้นด้วยสัญญาณที่มีเลขต่ำที่สุด (เช่นสัญญาณที่มีหมายเลขต่ำมีลำดับความสำคัญสูงสุด)
ถ้าสัญญาณทั้งแบบมาตรฐานและแบบเรียลไทม์กำลังรอดำเนินการกระบวนการ POSIX จะไม่ระบุรายละเอียดที่จะส่งมอบก่อน Linux เช่นเดียวกับการใช้งานอื่น ๆ อีกมากมายให้ความสำคัญกับสัญญาณมาตรฐานในกรณีนี้
ตาม POSIX การใช้งานควรอนุญาตให้มีการจัดคิวกระบวนการในเวลาจริงอย่างน้อย _POSIX_SIGQUEUE_MAX (32) ในกระบวนการ อย่างไรก็ตามแทนที่จะวางขีด จำกัด สำหรับแต่ละขั้นตอนลินุกซ์จะใช้ขีด จำกัด ของระบบในจำนวนสัญญาณคิวเรียลไทม์ที่ถูกจัดคิวไว้สำหรับทุกกระบวนการ
สามารถดูขีด จำกัด นี้ (และมีสิทธิ์) ได้ผ่านทาง proc / sys / kernel / / rtsig สูงสุด ไฟล์. ไฟล์ที่เกี่ยวข้อง, proc / sys / kernel / / rtsig สูงสุด , สามารถใช้เพื่อหาจำนวนสัญญาณในเวลาจริงที่เข้าคิวอยู่ในขณะนี้
สอดคล้องกับ
POSIX.1
สำคัญ: ใช้ ชาย คำสั่ง ( % ชาย ) เพื่อดูว่ามีการใช้คำสั่งใดในคอมพิวเตอร์เครื่องใดเครื่องหนึ่งของคุณ




