सिग्नल - लिनक्स / युनिक्स कमान

लिनक्स दुवै POSIX विश्वसनीय विश्वसनीय संकेतहरू (यहाँ "मानक संकेतहरू") र POSIX वास्तविक-समय संकेतहरू समर्थन गर्दछ।

मानक संकेतहरू

लिनक्स तल सूचीबद्ध मानक संकेतहरूको समर्थन गर्दछ। धेरै सिग्नल नम्बर वास्तुकला निर्भर हुन्छन्, रूपमा "मान" स्तम्भमा संकेत गरिएको। (जहाँ तीन मानहरू दिइएको छ, पहिलोमा सामान्यतया अल्फा र स्पार्कको लागि वैध हुन्छ, आई 386 को लागि मध्य एक, पीपीसी र एस.एम. र एमआईपीहरूको लागि अन्तिम एक।

A - संकेत गर्दछ कि एक संकेत वास्तुकला मा अनुपस्थित छ।)

तालिकाको "एक्शन" स्तम्भमा प्रविष्टिहरू सङ्केतका लागि पूर्वनिर्धारित कार्य निर्दिष्ट गर्दछ, जस्तै:

अवधि

पूर्वनिर्धारित कार्य प्रक्रिया समाप्त गर्ने हो।

इज्जत

पूर्वनिर्धारित कार्य संकेत बेवास्ता गर्न हो।

कोर

पूर्वनिर्धारित कार्य प्रक्रिया प्रक्रिया र डम्प कोर समाप्त हुन्छ।

रोक

पूर्वनिर्धारित कार्य प्रक्रिया रोक्न हो।

पहिलो संकेतहरू POSIX.1 मानकमा वर्णन गरिएको।

सिग्नल मूल्य कार्य टिप्पणी
वा प्रक्रिया नियन्त्रण गर्ने मृत्यु
SIGINT 2 अवधि किबोर्डबाट अवरोध
SIGQUIT 3 कोर किबोर्डबाट छोड्नुहोस्
SIGILL 4 कोर अवैध निर्देशन
SIGABRT 6 कोर अनुरुपबाट संकेत रद्द गर्नुहोस् (3)
SIGFPE 8 कोर फ्लोटिङ बिन्दु अपवाद
साइन इन गर्नुहोस् 9 अवधि सिग्नल मार्नुहोस्
SIGSEGV 11 कोर अवैध मेमोरी सन्दर्भ
SIGPIPE 13 अवधि टूटेको पाइप: कुनै पाठकहरूसँग पाइपमा लेख्नुहोस्
SIGALRM 14 अवधि अलार्मबाट टाइमर संकेत (2)
SIGTERM 15 अवधि समाप्ति संकेत
SIGUSR1 30,10,16 अवधि प्रयोगकर्ता-परिभाषित सिग्नल 1
SIGUSR2 31,12,17 अवधि प्रयोगकर्ता-परिभाषित संकेत 2
SIGCHLD 20,17,18 इज्जत बाल रोकिएको वा अन्त्य भयो
SIGCONT 1 9 .18,25 रोकियो भने जारी राख्नुहोस्
SIGSTOP 17,19,23 रोक प्रक्रिया रोक्नुहोस्
SIGTSTP 18,20,24 रोक टटमा टाइप गर्नुहोस्
SIGTTIN 21,21,26 रोक पृष्ठभूमि प्रक्रियाको लागि टिटी इनपुट
SIGTTOU 22,22,27 रोक पृष्ठभूमि प्रक्रियाको लागि टिटी आउटपुट

सिग्नलहरू SIGKILLSIGSTOP पकड्न, रोक्न वा बेवास्ता गर्न सकिँदैन।

अर्को संकेतहरू POSIX.1 मानकमा छैन तर SUSv2 र SUSv3 / POSIX 1003.1-2001 मा वर्णन गरिएको।

सिग्नल मूल्य कार्य टिप्पणी
SIGPOLL अवधि पोयोग्य घटना (Sys V)। SIGIO को पर्याय
SIGPROF 27,27,29 अवधि प्रोफाइलिंग टाइमर समाप्त भयो
SIGSYS 12, -, 12 कोर दिनचर्यामा खराब तर्क (SVID)
SIGTRAP 5 कोर ट्रेस / ब्रेकपोइन्ट जाल
SIGGG 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 सहित, SIGSYS को लागि पूर्वनिर्धारित व्यवहार, SIGXCPU , SIGXFSZ , र (SPARC र MIPS भन्दा अन्य आर्किटेक्ट्स) सिग्बस प्रक्रिया (कोर डंप बिना) थियो। (केहि अन्य युनिजहरूमा SIGXCPUSIGXFSZ को लागि पूर्वनिर्धारित कार्य कोर डम्प बिना प्रक्रिया हटाउन हो।) लिनक्स 2.4 कोर सिम्पसँग प्रक्रिया समाप्त गर्ने यी संकेतहरूको लागि POSIX 1003.1-2001 आवश्यकताहरू अनुरूप।

अर्को विभिन्न अन्य संकेतहरू।

सिग्नल मूल्य कार्य टिप्पणी
SIGEMT 7, -, 7 अवधि
SIGSTKFLT -, 16, - अवधि Coprocessor मा स्ट्याक गलती (अप्रयुक्त)
SIGIO 23,29,22 अवधि आई / ओ अब सम्भव छ (4.2 बीएसडी)
SIGCLD -, -, 18 इज्जत SIGCHLD का पर्याय
SIGPWR 29,30,19 अवधि पावर विफलता (प्रणाली V)
SIGINFO 29, -, - SIGPWR का पर्याय
SIGLOST -, -, - अवधि फाइल लक हरायो
SIGWINCH 28,28,20 इज्जत विन्डो पुनःआकार सिग्नल (4.3 बीएसडी, सूर्य)
साइन इन गरियो -, 31, - अवधि अप्रयुक्त सिग्नल (SIGSYS हुनेछ)

(सिग्नल 2 सिग्नोफ / SIGPWR अल्फामा तर SIGLOST स्प्याकमा ।)

SIGEMT POSIX 1003.1-2001 मा निर्दिष्ट गरिएको छैन, तर धेरै अन्य इनिन्सहरूमा कहिलेकाहीँ कहिल्यै नबिर्सने देखिन्छ, जहाँ यसको पूर्वनिर्धारित कार्य सामान्यतया प्रक्रिया डम्पको साथ समाप्त हुन्छ।

SIGPWR (जुन POSIX 1003.1-2001 मा निर्दिष्ट गरिएको छैन) सामान्यतया पूर्वनिर्धारित रूपमा ती अन्यहरूमा अनियमित गरिन्छ।

SIGIO (जुन POSIX 1003.1-2001 मा निर्दिष्ट गरिएको छैन) धेरै अन्य इकाइहरूमा पूर्वनिर्धारित रूपमा उपेक्षा गरिन्छ।

वास्तविक समय संकेतहरू

लिनक्स वास्तविक समय संकेतहरूको समर्थन गर्दछ जुन मूल POSIX.4 वास्तविक समय एक्सटेन्सनमा परिभाषित गरिएको छ (र अहिले POSIX 1003.1-2001 मा समावेश छ)। लिनक्सले 32 वास्तविक-समय संकेतहरू समर्थन गर्दछ, जो 32 ( SIGRTMIN ) 63 ( SIGRTMAX ) बाट गणना गरिएको छ। (कार्यक्रमहरू सधैं सचेत SIGRTMIN + n को प्रयोग गरेर वास्तविक-समय संकेतहरूको सन्दर्भमा हुनुपर्दछ, किनकी वास्तविक समय सिग्नल नम्बरहरू दायराहरू मा भिन्न हुन्छ।)

मानक संकेतहरूको विपरीत, वास्तविक समय सङ्केतहरू कुनै पूर्वनिर्धारित अर्थहरू छैनन्: वास्तविक-समयका संकेतहरूको सम्पूर्ण सेटले आवेदन-परिभाषित उद्देश्यका लागि प्रयोग गर्न सकिन्छ। (नोट, तथापि, कि लिनक्सथ्रेडले कार्यान्वयनलाई पहिलो वास्तविक समय संकेतहरू प्रयोग गर्दछ।)

अनलिन्ड गरिएको वास्तविक-समय सिग्नलको लागि पूर्वनिर्धारित कार्य प्राप्त प्रक्रिया समाप्त गर्न।

रियल-टाइम सिगल्सहरू निम्नद्वारा विशिष्ट छन्:

  1. वास्तविक समय संकेतहरूको बहुविध पङ्क्तिबद्ध हुन सकिन्छ। यसको विपरीत, यदि सिग्नल हाल हालको ब्लक भएको बेला मानक सिग्नलका धेरै उदाहरणहरू वितरित गरिन्छ, त्यसपछि केवल एक उदाहरण लामबद्ध छ।
  2. सिग्न्यु (2) को प्रयोग गरेर सिग्नल पठाइयो भने सिग्नल मान (यदि एक पूर्णांक वा सूचक) सिग्नल पठाउन सकिन्छ। यदि प्राप्त प्रक्रियाले यो सिग्नलको लागि SA_SIGACTION झण्डा प्रयोग गरेर यस सिग्नलको लागि ह्यान्डलर स्थापना गर्दछ (2), त्यसपछि यो siginfo_t ढाँचाको si_value क्षेत्रको माध्यमबाट यो डेटा प्राप्तकर्तालाई दोस्रो तर्कको रूपमा पारित गर्न सकिन्छ। यसबाहेक, यस ढाँचाको si_pidsi_uid फिल्डहरू PID र प्रक्रियाको वास्तविक प्रयोगकर्ता आईडी संकेत पठाउन प्रयोग गर्न सकिन्छ।
  3. वास्तविक समय संकेतहरू एक ग्यारेन्टी अर्डरमा डेलिभर गरिन्छ। उही प्रकारको बहु वास्तविक समय संकेतहरू पठाइएको क्रममा डेलिभरी गरिन्छ। यदि फरक वास्तविक समय सिग्नलहरू प्रक्रियामा पठाइएमा, तिनीहरू निम्नतम संख्यामा सिग्नलसँग सुरू गर्न डेलिभरी गरिन्छ। (आईई, कम संख्यामा संकेतहरू उच्च प्राथमिकता हो।)

यदि दुवै मानक र वास्तविक समय सिग्नलहरू प्रक्रियाको लागि विचाराधीन छन्, POSIX यसलाई अननिर्दिष्ट छोड्दछ जुन पहिले डेलिभर गरिएको छ। लिनक्स, धेरै अन्य कार्यान्वयनहरू जस्तै, यस अवस्थामा मानक संकेतहरूमा प्राथमिकता प्रदान गर्दछ।

POSIX को अनुसार, एक कार्यान्वयनमा कम्तिमा _POSIX_SIGQUEUE_MAX (32) वास्तविक-समय संकेतहरू प्रक्रियामा लामिनेछ। तथापि, प्रति-प्रक्रिया सीमा राख्नुको सट्टा, लिनक्सले सबै प्रक्रियाहरूको लागि लामबद्ध वास्तविक-समय संकेतहरूको संख्यामा प्रणाली-चौड़ाई सीमा प्रदान गर्दछ।

यो सीमा हेर्न सकिन्छ (र विशेषाधिकारको साथ) / proc / sys / kernel / rtsig-max फाइल मार्फत परिवर्तन भयो। एक सम्बन्धित फाईल, / proc / sys / kernel / rtsig-max , प्रयोग गर्न सकिन्छ कि कसरी वास्तविक-समय संकेतहरू लामबद्ध छन्।

कन्फर्म गर्दै

POSIX.1

महत्वपूर्ण: तपाईको विशेष कम्प्युटरमा आदेश कसरी प्रयोग गरिन्छ भनेर हेर्नको लागि मानिसको आदेश ( % मानिस ) प्रयोग गर्नुहोस्।