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 เพื่อ sigaction (2) แล้วจะสามารถรับข้อมูลนี้ผ่านทางฟิลด์ si_value ของโครงสร้าง siginfo_t ที่ ส่งผ่านเป็นอาร์กิวเมนต์ที่สองไปยังตัวจัดการ นอกจากนี้ยังสามารถใช้โครงสร้าง Si_ID และ Si_UID ของโครงสร้างนี้เพื่อรับ PID และ ID ผู้ใช้จริงของกระบวนการที่ส่งสัญญาณ
- สัญญาณเรียลไทม์จะจัดส่งในใบสั่งซื้อที่ได้รับการรับรอง ส่งสัญญาณแบบเรียลไทม์หลายชนิดในประเภทเดียวกันตามลำดับที่ส่ง ถ้ามีการส่งสัญญาณเรียลไทม์ที่ต่างกันไปให้ดำเนินกระบวนการพวกเขาจะส่งเริ่มต้นด้วยสัญญาณที่มีเลขต่ำที่สุด (เช่นสัญญาณที่มีหมายเลขต่ำมีลำดับความสำคัญสูงสุด)
ถ้าสัญญาณทั้งแบบมาตรฐานและแบบเรียลไทม์กำลังรอดำเนินการกระบวนการ POSIX จะไม่ระบุรายละเอียดที่จะส่งมอบก่อน Linux เช่นเดียวกับการใช้งานอื่น ๆ อีกมากมายให้ความสำคัญกับสัญญาณมาตรฐานในกรณีนี้
ตาม POSIX การใช้งานควรอนุญาตให้มีการจัดคิวกระบวนการในเวลาจริงอย่างน้อย _POSIX_SIGQUEUE_MAX (32) ในกระบวนการ อย่างไรก็ตามแทนที่จะวางขีด จำกัด สำหรับแต่ละขั้นตอนลินุกซ์จะใช้ขีด จำกัด ของระบบในจำนวนสัญญาณคิวเรียลไทม์ที่ถูกจัดคิวไว้สำหรับทุกกระบวนการ
สามารถดูขีด จำกัด นี้ (และมีสิทธิ์) ผ่านทางไฟล์ / proc / sys / kernel / rtsig-max ไฟล์ที่เกี่ยวข้อง / proc / sys / kernel / rtsig-max สามารถใช้เพื่อค้นหาจำนวนสัญญาณที่เรียลไทม์ที่ถูกจัดคิวอยู่ในปัจจุบัน
สอดคล้องกับ
POSIX.1
สำคัญ: ใช้คำสั่ง man ( % man ) เพื่อดูว่าคำสั่งถูกใช้อย่างไรในคอมพิวเตอร์เครื่องใดเครื่องหนึ่งของคุณ