लिनक्स दोनों POSIX विश्वसनीय सिग्नल (इसके बाद "मानक सिग्नल") और POSIX रीयल-टाइम सिग्नल दोनों का समर्थन करता है।
मानक सिग्नल
लिनक्स नीचे सूचीबद्ध मानक सिग्नल का समर्थन करता है। कई सिग्नल नंबर आर्किटेक्चर निर्भर हैं, जैसा कि "मान" कॉलम में दर्शाया गया है। (जहां तीन मान दिए जाते हैं, पहला वाला आमतौर पर अल्फा और स्पार्क के लिए मान्य होता है, i386, पीपीसी और श के लिए मध्य वाला, और मिप्स के लिए अंतिम वाला।
ए - इंगित करता है कि इसी आर्किटेक्चर पर सिग्नल अनुपस्थित है।)
तालिका के "क्रिया" कॉलम में प्रविष्टियां सिग्नल के लिए डिफ़ॉल्ट क्रिया निर्दिष्ट करती हैं, निम्नानुसार:
अवधि
प्रक्रिया को समाप्त करने के लिए डिफ़ॉल्ट कार्रवाई है।
आईजीएन
सिग्नल को अनदेखा करना डिफ़ॉल्ट क्रिया है।
कोर
प्रक्रिया और डंप कोर को समाप्त करने के लिए डिफ़ॉल्ट कार्रवाई है।
रुकें
प्रक्रिया को रोकने के लिए डिफ़ॉल्ट कार्रवाई है।
सबसे पहले मूल POSIX.1 मानक में वर्णित सिग्नल।
संकेत | मूल्य | कार्य | टिप्पणी |
या नियंत्रण प्रक्रिया की मौत | |||
SIGINT | 2 | अवधि | कीबोर्ड से इंटरप्ट करें |
SIGQUIT | 3 | कोर | कीबोर्ड से बाहर निकलें |
SIGILL | 4 | कोर | अवैध निर्देश |
SIGABRT | 6 | कोर | गर्भपात से संकेत छोड़ो (3) |
SIGFPE | 8 | कोर | फ़्लोटिंग प्वाइंट अपवाद |
SIGKILL | 9 | अवधि | सिग्नल को मारो |
SIGSEGV | 1 1 | कोर | अवैध स्मृति संदर्भ |
SIGPIPE | 13 | अवधि | टूटी हुई पाइप: कोई पाठकों के साथ पाइप को लिखें |
SIGALRM | 14 | अवधि | अलार्म से टाइमर सिग्नल (2) |
SIGTERM | 15 | अवधि | समापन संकेत |
SIGUSR1 | 30,10,16 | अवधि | उपयोगकर्ता परिभाषित सिग्नल 1 |
SIGUSR2 | 31,12,17 | अवधि | उपयोगकर्ता परिभाषित सिग्नल 2 |
SIGCHLD | 20,17,18 | आईजीएन | बच्चे को रोक दिया गया या समाप्त कर दिया गया |
SIGCONT | 19,18,25 | बंद करो अगर जारी रखें | |
SIGSTOP | 17,19,23 | रुकें | प्रक्रिया रोको |
SIGTSTP | 18,20,24 | रुकें | Tty पर टाइप बंद करो |
SIGTTIN | 21,21,26 | रुकें | पृष्ठभूमि प्रक्रिया के लिए tty इनपुट |
SIGTTOU | 22,22,27 | रुकें | पृष्ठभूमि प्रक्रिया के लिए tty आउटपुट |
सिग्नल और सिगस्टॉप के संकेतों को पकड़ा, अवरुद्ध या अनदेखा नहीं किया जा सकता है।
अगला संकेत POSIX.1 मानक में नहीं हैं लेकिन SUSv2 और SUSv3 / POSIX 1003.1-2001 में वर्णित हैं।
संकेत | मूल्य | कार्य | टिप्पणी |
SIGPOLL | अवधि | मतदान योग्य घटना (एसआईएस वी)। SIGIO का समानार्थी | |
SIGPROF | 27,27,29 | अवधि | प्रोफाइलिंग टाइमर की समय सीमा समाप्त हो गई |
SIGSYS | 12, -, 12 | कोर | नियमित रूप से खराब तर्क (एसवीआईडी) |
SIGTRAP | 5 | कोर | ट्रेस / ब्रेकपॉइंट जाल |
SIGURG | 16,23,21 | आईजीएन | सॉकेट पर तत्काल स्थिति (4.2 बीएसडी) |
SIGVTALRM | 26,26,28 | अवधि | वर्चुअल अलार्म घड़ी (4.2 बीएसडी) |
SIGXCPU | 24,24,30 | कोर | सीपीयू समय सीमा पार हो गई (4.2 बीएसडी) |
SIGXFSZ | 25,25,31 | कोर | फ़ाइल आकार सीमा पार हो गई (4.2 बीएसडी) |
लिनक्स 2.2 तक और एसआईजीएसवाईएस , एसआईजीएक्ससीपीयू , एसआईजीएक्सएफएसजेड , और ( एसपीएआरसी और एमआईपीएस के अलावा आर्किटेक्चर पर) के लिए डिफ़ॉल्ट व्यवहार सिगबस प्रक्रिया को समाप्त करना था (कोर डंप के बिना)। (कुछ अन्य इकाइयों पर SIGXCPU और SIGXFSZ के लिए डिफ़ॉल्ट कार्रवाई कोर डंप के बिना प्रक्रिया को समाप्त करना है।) लिनक्स 2.4 इन संकेतों के लिए पॉज़िक्स 1003.1-2001 आवश्यकताओं के अनुरूप है, जो कोर डंप के साथ प्रक्रिया को समाप्त कर देता है।
अगले कई अन्य सिग्नल।
संकेत | मूल्य | कार्य | टिप्पणी |
SIGEMT | 7 - 7 | अवधि | |
SIGSTKFLT | -, 16, - | अवधि | कॉप्रोसेसर पर ढेर गलती (अप्रयुक्त) |
SIGIO | 23,29,22 | अवधि | I / O अब संभव है (4.2 बीएसडी) |
SIGCLD | -, -, 18 | आईजीएन | SIGCHLD के लिए एक पर्याय |
SIGPWR | 29,30,19 | अवधि | पावर विफलता (सिस्टम वी) |
SIGINFO | 29, -, - | एसआईजीपीडब्लूआर के लिए एक पर्याय | |
SIGLOST | - - - | अवधि | फ़ाइल लॉक खो गया |
SIGWINCH | 28,28,20 | आईजीएन | खिड़की का आकार बदलें सिग्नल (4.3 बीएसडी, सूर्य) |
SIGUNUSED | - 31, - | अवधि | अप्रयुक्त सिग्नल (SIGSYS होगा) |
(सिग्नल 29 एक अल्फा पर SIGINFO / SIGPWR है लेकिन एक चक्कर पर सिग्लोस्ट है ।)
SIGEMT को POSIX 1003.1-2001 में निर्दिष्ट नहीं किया गया है, लेकिन अधिकांश अन्य इकाइयों पर कभी भी प्रकट नहीं होता है, जहां इसकी डिफ़ॉल्ट क्रिया आमतौर पर कोर डंप के साथ प्रक्रिया को समाप्त करने के लिए होती है।
SIGPWR (जो POSIX 1003.1-2001 में निर्दिष्ट नहीं है) को आम तौर पर उन अन्य इकाइयों पर डिफ़ॉल्ट रूप से अनदेखा किया जाता है जहां यह प्रतीत होता है।
SIGIO (जो POSIX 1003.1-2001 में निर्दिष्ट नहीं है) कई अन्य इकाइयों पर डिफ़ॉल्ट रूप से अनदेखा किया जाता है।
रीयल-टाइम सिग्नल
लिनक्स मूल रूप से POSIX.4 रीयल-टाइम एक्सटेंशन (और अब POSIX 1003.1-2001 में शामिल) के रूप में परिभाषित वास्तविक समय संकेतों का समर्थन करता है। लिनक्स 32 रीयल-टाइम संकेतों का समर्थन करता है, जो 32 ( एसआईजीआरटीएमआईएन ) से 63 ( एसआईजीआरटीएमएक्स ) से गिने जाते हैं। (प्रोग्राम्स को हमेशा SIGRTMIN + n नोटेशन का उपयोग करके रीयल-टाइम संकेतों का संदर्भ लेना चाहिए, क्योंकि रीयल-टाइम सिग्नल नंबरों की सीमा इकाइयों में भिन्न होती है।)
मानक सिग्नल के विपरीत, रीयल-टाइम संकेतों का कोई पूर्वनिर्धारित अर्थ नहीं है: वास्तविक समय संकेतों का पूरा सेट एप्लिकेशन-परिभाषित उद्देश्यों के लिए उपयोग किया जा सकता है। (नोट, हालांकि, लिनक्स थ्रेड कार्यान्वयन पहले तीन वास्तविक समय संकेतों का उपयोग करता है।)
एक अनचाहे वास्तविक समय संकेत के लिए डिफ़ॉल्ट कार्रवाई प्राप्त प्रक्रिया को समाप्त करना है।
रीयल-टाइम सिग्नल निम्नलिखित द्वारा प्रतिष्ठित हैं:
- रीयल-टाइम सिग्नल के कई उदाहरण कतारबद्ध किए जा सकते हैं। इसके विपरीत, यदि मानक सिग्नल के कई उदाहरण वितरित किए जाते हैं, जबकि उस सिग्नल को वर्तमान में अवरोधित किया जाता है, तो केवल एक उदाहरण कतारबद्ध होता है।
- अगर संकेत सिग्कुए (2) का उपयोग करके भेजा जाता है, तो एक साथ मूल्य (या तो एक पूर्णांक या सूचक) सिग्नल के साथ भेजा जा सकता है। यदि प्राप्त करने की प्रक्रिया S_SIGACTION ध्वज का उपयोग सिग्नेशन (2) के लिए इस सिग्नल के लिए एक हैंडलर स्थापित करती है तो यह हैडलर को दूसरे तर्क के रूप में पारित siginfo_t संरचना के si_value फ़ील्ड के माध्यम से यह डेटा प्राप्त कर सकता है। इसके अलावा, इस संरचना के si_pid और si_uid फ़ील्ड का उपयोग सिग्नल भेजने की प्रक्रिया के पीआईडी और वास्तविक उपयोगकर्ता आईडी प्राप्त करने के लिए किया जा सकता है।
- वास्तविक समय संकेत वास्तविक गारंटी में वितरित किए जाते हैं। उसी प्रकार के कई वास्तविक समय संकेत भेजे गए क्रम में वितरित किए जाते हैं। यदि किसी प्रक्रिया में अलग-अलग रीयल-टाइम सिग्नल भेजे जाते हैं, तो उन्हें निम्नतम क्रमांकित सिग्नल से शुरू किया जाता है। (यानी, कम संख्या वाले संकेतों की सर्वोच्च प्राथमिकता है।)
यदि किसी प्रक्रिया के लिए मानक और वास्तविक समय दोनों सिग्नल लंबित हैं, तो POSIX इसे निर्दिष्ट नहीं करता है जो पहले वितरित किया जाता है। लिनक्स, कई अन्य कार्यान्वयन की तरह, इस मामले में मानक संकेतों को प्राथमिकता देता है।
POSIX के अनुसार, एक कार्यान्वयन को कम से कम _POSIX_SIGQUEUE_MAX (32) रीयल-टाइम सिग्नल को किसी प्रक्रिया में कतारबद्ध करने की अनुमति देनी चाहिए। हालांकि, प्रति-प्रक्रिया सीमा रखने के बजाय, लिनक्स सभी प्रक्रियाओं के लिए कतारबद्ध वास्तविक समय संकेतों की संख्या पर सिस्टम-व्यापी सीमा लागू करता है।
इस सीमा को देखा जा सकता है (और विशेषाधिकार के साथ) / proc / sys / kernel / rtsig-max फ़ाइल के माध्यम से बदला जाता है। एक संबंधित फ़ाइल, / proc / sys / kernel / rtsig-max , का उपयोग यह पता लगाने के लिए किया जा सकता है कि वर्तमान में कितने वास्तविक समय सिग्नल कतारबद्ध हैं।
के अनुरूप करना
POSIX.1
महत्वपूर्ण: यह देखने के लिए मैन कमांड ( % man ) का उपयोग करें कि आपके विशेष कंप्यूटर पर कमांड का उपयोग कैसे किया जाता है।