सिग्नल (आईपीसी): Difference between revisions

From Vigyanwiki
(Created page with "{{short description|Form of inter-process communication in computer systems}} {{About|signals as a form of IPC|signals in event-driven processing|signal programming}} {{Use dm...")
 
No edit summary
 
(13 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{short description|Form of inter-process communication in computer systems}}
{{short description|Form of inter-process communication in computer systems}}'''सिग्नल''' विशिष्ट व्यवहार जैसे छोड़ने या त्रुटि प्रबंधन को ट्रिगर करने के लिए चल रहे [[कंप्यूटर प्रोग्राम]] को भेजे गए मानकीकृत संदेश हैं। वे [[अंतःप्रक्रम संचार]] (आईपीसी) का एक सीमित रूप हैं जो सामान्यतः [[यूनिक्स]], यूनिक्स-जैसे और अन्य [[POSIX|पोसिक्स]]- संगत ऑपरेटिंग सिस्टम में उपयोग किए जाते हैं।
{{About|signals as a form of IPC|signals in event-driven processing|signal programming}}
{{Use dmy dates|date=February 2021}}
{{More citations needed|date=August 2012}}
सिग्नल विशिष्ट व्यवहार को ट्रिगर करने के लिए चल रहे [[कंप्यूटर प्रोग्राम]] को भेजे गए मानकीकृत संदेश हैं, जैसे छोड़ने या त्रुटि प्रबंधन। वे [[अंतःप्रक्रम संचार]] (IPC) का एक सीमित रूप हैं, जो आमतौर पर [[यूनिक्स]], यूनिक्स-जैसे और अन्य [[POSIX]]- संगत ऑपरेटिंग सिस्टम में उपयोग किए जाते हैं।


एक संकेत एक विक्ट है: एक ही प्रक्रिया के भीतर एक [[प्रक्रिया (कंप्यूटिंग)]] या एक विशिष्ट थ्रेड (कंप्यूटर विज्ञान) को एक घटना के बारे में सूचित करने के लिए भेजा गया अतुल्यकालिक अधिसूचना। संकेतों के सामान्य उपयोग एक प्रक्रिया को बाधित करना, निलंबित करना, समाप्त करना या समाप्त करना (आदेश देना) है। सिग्नल 1970 के [[बेल लैब्स]] यूनिक्स में उत्पन्न हुए और बाद में POSIX मानक में निर्दिष्ट किए गए।
एक संकेत एक अतुल्यकालिक सूचना है जो किसी [[प्रक्रिया (कंप्यूटिंग)]] को या किसी विशिष्ट थ्रेड (कंप्यूटर विज्ञान) को उसी प्रक्रिया के अन्दर किसी घटना की सूचना देने के लिए भेजी जाती है। संकेतों के सामान्य उपयोग किसी प्रक्रिया को बाधित, निलंबित, समाप्त या समाप्त करना है। सिग्नल 1970 के [[बेल लैब्स]] यूनिक्स में उत्पन्न हुए और बाद में पोसिक्स मानक में निर्दिष्ट किया गया हैं।


जब सिग्नल भेजा जाता है, तो ऑपरेटिंग सिस्टम सिग्नल देने के लिए लक्ष्य प्रक्रिया के सामान्य नियंत्रण प्रवाह को बाधित करता है। किसी भी [[परमाणु संचालन]]|नॉन-एटॉमिक इंस्ट्रक्शन के दौरान निष्पादन को बाधित किया जा सकता है। अगर प्रक्रिया ने पहले सिग्नल हैंडलर पंजीकृत किया है, तो वह दिनचर्या निष्पादित की जाती है। अन्यथा, डिफ़ॉल्ट सिग्नल हैंडलर निष्पादित किया जाता है।
जब सिग्नल भेजा जाता है, तो ऑपरेटिंग सिस्टम सिग्नल देने के लिए लक्ष्य प्रक्रिया के सामान्य नियंत्रण प्रवाह को बाधित करता है। किसी भी [[परमाणु संचालन|गैर-परमाणु]] निर्देश के समय निष्पादन को बाधित किया जा सकता है। यदि प्रक्रिया ने पहले सिग्नल हैंडलर पंजीकृत किया है, तो वह दिनचर्या निष्पादित की जाती है। अन्यथा, डिफ़ॉल्ट सिग्नल हैंडलर निष्पादित किया जाता है।


एंबेडेड प्रोग्राम इंटर-प्रोसेस संचार के लिए उपयोगी सिग्नल पा सकते हैं, क्योंकि सिग्नल उनके [[एल्गोरिथम दक्षता]] के लिए उल्लेखनीय हैं।
एंबेडेड प्रोग्राम अंतःप्रक्रम संचार के लिए उपयोगी सिग्नल पा सकते हैं, क्योंकि सिग्नल उनके [[एल्गोरिथम दक्षता]] के लिए उल्लेखनीय हैं।


सिग्नल [[बाधा डालना]]्स के समान हैं, अंतर यह है कि इंटरप्ट्स सेंट्रल_प्रोसेसिंग_यूनिट द्वारा मध्यस्थ होते हैं और [[कर्नेल (ऑपरेटिंग सिस्टम)]] द्वारा नियंत्रित होते हैं जबकि सिग्नल कर्नेल द्वारा मध्यस्थ होते हैं (संभवतः सिस्टम कॉल के माध्यम से) और व्यक्तिगत प्रक्रिया_ (कंप्यूटिंग) द्वारा नियंत्रित होते हैं।{{cn |date=May 2022}} कर्नेल एक रुकावट को उस प्रक्रिया के लिए एक संकेत के रूप में पारित कर सकता है जो इसे उत्पन्न करता है (सामान्य उदाहरण [[SIGSEGV]], [[SIGBUS]], #SIGILL और #SIGFPE हैं)
सिग्नल [[बाधा डालना]]्स के समान हैं, अंतर यह है कि अवरोध्स सेंट्रल प्रक्रियािंग यूनिट द्वारा मध्यस्थ होते हैं और [[कर्नेल (ऑपरेटिंग सिस्टम)]] द्वारा नियंत्रित होते हैं जबकि सिग्नल कर्नेल द्वारा मध्यस्थ होते हैं (संभवतः सिस्टम कॉल के माध्यम से) और व्यक्तिगत प्रक्रिया (कंप्यूटिंग) द्वारा नियंत्रित होते हैं।{{cn |date=May 2022}} कर्नेल रुकावट को उस प्रक्रिया के लिए सिग्नल के रूप में पारित कर सकता है जो इसे (सामान्य उदाहरण [[SIGSEGV|एसआईजीएसईजीवी]], [[SIGBUS|सिगबस]], सिगिल और एसआईजीएफपीई हैं) उत्पन्न करता है।


== इतिहास ==
== इतिहास ==
[[संस्करण 1 यूनिक्स]] (1971) में इंटरप्ट, क्विट और मशीन ट्रैप को पकड़ने के लिए अलग [[सिस्टम कॉल]] थे।
[[संस्करण 1 यूनिक्स]] (1971) में अवरोध, क्विट और मशीन ट्रैप को पकड़ने के लिए अलग [[सिस्टम कॉल]] थे।


{{tt|kill}} [[संस्करण 2 यूनिक्स]] (1972) में दिखाई दिया।
{{tt|किल}} [[संस्करण 2 यूनिक्स]] (1972) में दिखाई दिया।


[[संस्करण 4 यूनिक्स]] (1973) ने सभी जालों को एक कॉल में संयोजित किया, {{tt|signal}}.
[[संस्करण 4 यूनिक्स]] (1973) ने सभी जालों को कॉल {{tt|सिग्नल}} में संयोजित किया,


[[संस्करण 5 यूनिक्स]] (1974) मनमाने संकेत भेज सकता है।<ref name="reader">{{cite techreport |first1=M. D. |last1=McIlroy |author-link1=Doug McIlroy |year=1987 |url=https://www.cs.dartmouth.edu/~doug/reader.pdf |title=A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 |series=CSTR |number=139 |institution=Bell Labs}}</ref> [[संस्करण 7 यूनिक्स]] (1979) में प्रत्येक गिने हुए जाल को एक प्रतीकात्मक नाम मिला।
[[संस्करण 5 यूनिक्स]] (1974) मनमाने सिग्नल भेज सकता है।<ref name="reader">{{cite techreport |first1=M. D. |last1=McIlroy |author-link1=Doug McIlroy |year=1987 |url=https://www.cs.dartmouth.edu/~doug/reader.pdf |title=A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 |series=CSTR |number=139 |institution=Bell Labs}}</ref> [[संस्करण 7 यूनिक्स]] (1979) में प्रत्येक गिने हुए जाल को प्रतीकात्मक नाम मिला।


बेल लैब्स (मध्य 80 के दशक) से योजना 9 ने संकेतों को नोटों से बदल दिया, जो छोटे, मनमाना तार भेजने की अनुमति देते हैं।<ref>{{cite web |last1=Gagliardi |first1=Pietro |title=C Programming in Plan 9 from Bell Labs |url=https://doc.cat-v.org/plan_9/programming/c_programming_in_plan_9 |website=doc.cat-v.org |access-date=22 January 2022}}</ref>
बेल लैब्स (मध्य 80 के दशक) से योजना 9 ने सिग्नलों को नोटों से बदल दिया, जो छोटे, मनमाना तार भेजने की अनुमति देते हैं।<ref>{{cite web |last1=Gagliardi |first1=Pietro |title=C Programming in Plan 9 from Bell Labs |url=https://doc.cat-v.org/plan_9/programming/c_programming_in_plan_9 |website=doc.cat-v.org |access-date=22 January 2022}}</ref>




== सिग्नल भेजना == {{tt|[[Kill (command)|kill]](2)}} }} सिस्टम कॉल निर्दिष्ट प्रक्रिया के लिए निर्दिष्ट सिग्नल भेजता है, यदि अनुमतियां अनुमति देती हैं। इसी प्रकार, द {{tt|[[kill (command)|kill(1)]]}} कमांड उपयोगकर्ता को प्रक्रियाओं को सिग्नल भेजने की अनुमति देता है। {{tt|raise(3)}} }} लाइब्रेरी फ़ंक्शन वर्तमान प्रक्रिया को निर्दिष्ट संकेत भेजता है।


[[शून्य से विभाजन]], [[विभाजन उल्लंघन]] (#SIGSEGV), और फ़्लोटिंग पॉइंट अपवाद (#SIGFPE) जैसी अपवाद हैंडलिंग एक [[कोर निपात]] का कारण बनेगी और कार्यक्रम को समाप्त कर देगी।
'''सिग्नल भेजना'''


कर्नेल घटनाओं की प्रक्रियाओं को सूचित करने के लिए संकेत उत्पन्न कर सकता है। उदाहरण के लिए, #SIGPIPE उत्पन्न होगा जब एक प्रक्रिया पाइप को लिखती है जिसे पाठक द्वारा बंद कर दिया गया है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को समाप्त करने का कारण बनता है, जो [[पाइपलाइन (यूनिक्स)]] का निर्माण करते समय सुविधाजनक होता है।
यदि अनुमतियाँ अनुमति देती हैं, तो {{tt|[[किल (कमांड)|किल]](2)}} सिस्टम कॉल एक निर्दिष्ट प्रक्रिया को एक निर्दिष्ट संकेत भेजता है। इसी प्रकार, {{tt|[[किल (कमांड)|किल (1)]]}} कमांड उपयोगकर्ता को प्रक्रियाओं को सिग्नल भेजने की अनुमति देता है। {{tt|रेज़(3)}} लाइब्रेरी फ़ंक्शन वर्तमान प्रक्रिया को निर्दिष्ट सिग्नल भेजता है।


चल रही प्रक्रिया के [[कंप्यूटर टर्मिनल]] पर कुछ कुंजी संयोजनों को टाइप करने से सिस्टम इसे कुछ संकेत भेजता है:<ref>{{cite web |title=Termination Signals |url=https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html |website=The GNU C Library)}}</ref>
[[शून्य से विभाजन]], [[विभाजन उल्लंघन]] (एसआईजीएसईजीवी), और फ़्लोटिंग पॉइंट अपवाद (एसआईजीएफपीई) द्वारा विभाजन जैसे अपवाद [[कोर निपात]] का कारण बनेगी और कार्यक्रम को समाप्त कर देगी।
* [[Ctrl-C]] (पुराने यूनिक्स में, DEL) एक INT सिग्नल (इंटरप्ट, #SIGINT) भेजता है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को समाप्त करने का कारण बनता है।
* [[Ctrl-Z]] एक TSTP सिग्नल (टर्मिनल स्टॉप, [[SIGTSTP]]) भेजता है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को निष्पादन को निलंबित करने का कारण बनता है।<ref>{{cite web |title=Job Control Signals |url=https://www.gnu.org/software/libc/manual/html_node/Job-Control-Signals.html |website=The GNU C Library}}</ref>
* Ctrl-\ एक QUIT सिग्नल (#SIGQUIT) भेजता है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को समाप्त करने और कोर को डंप करने का कारण बनता है।
* [[स्थिति कुंजी]]|Ctrl-T (सभी UNIXes पर समर्थित नहीं) एक INFO सिग्नल (#SIGINFO) भेजता है; डिफ़ॉल्ट रूप से, और यदि कमांड द्वारा समर्थित है, तो यह ऑपरेटिंग सिस्टम को रनिंग कमांड के बारे में जानकारी दिखाने का कारण बनता है।<ref>{{cite web |title=Miscellaneous Signals |url=https://www.gnu.org/software/libc/manual/html_node/Miscellaneous-Signals.html |website=The GNU C Library}}</ref>
आधुनिक ऑपरेटिंग सिस्टम के साथ इन डिफ़ॉल्ट कुंजी संयोजनों को इसके साथ बदला जा सकता है {{tt|[[stty]]}} आज्ञा।


== संकेतों को संभालना ==
कर्नेल घटनाओं की प्रक्रियाओं को सूचित करने के लिए सिग्नल उत्पन्न कर सकता है। उदाहरण के लिए, एसआईजीपीआईपीई उत्पन्न होगा जब प्रक्रिया पाइप को लिखती है जिसे पाठक द्वारा बंद कर दिया गया है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को समाप्त करने का कारण बनता है, जो [[पाइपलाइन (यूनिक्स)]] का निर्माण करते समय सुविधाजनक होता है।
सिगनल हैंडलर्स को sigaction| के साथ स्थापित किया जा सकता है{{tt|signal(2)}} या {{tt|sigaction(2)}}सिस्टम कॉल। यदि किसी विशेष सिग्नल के लिए सिग्नल हैंडलर स्थापित नहीं है, तो डिफ़ॉल्ट हैंडलर का उपयोग किया जाता है। अन्यथा सिग्नल इंटरसेप्ट हो जाता है और सिग्नल हैंडलर लागू हो जाता है। प्रक्रिया एक हैंडलर बनाए बिना दो डिफ़ॉल्ट व्यवहार भी निर्दिष्ट कर सकती है: सिग्नल (SIG_IGN) को अनदेखा करें और डिफ़ॉल्ट सिग्नल हैंडलर (SIG_DFL) का उपयोग करें। दो सिग्नल हैं जिन्हें इंटरसेप्ट और हैंडल नहीं किया जा सकता है: #SIGKILL और [[SIGSTOP]]
 
चल रही प्रक्रिया के [[कंप्यूटर टर्मिनल]] पर कुछ कुंजी संयोजनों को टाइप करने से सिस्टम इसे कुछ सिग्नल भेजता है:<ref>{{cite web |title=Termination Signals |url=https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html |website=The GNU C Library)}}</ref>
* [[Ctrl-C]] (पुराने यूनिक्स में, डेल) इंट सिग्नल (अवरोध, सिगिनट) भेजता है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को समाप्त करने का कारण बनता है।
* [[Ctrl-Z]] टीएसटीपी सिग्नल (टर्मिनल स्टॉप, [[SIGTSTP|एसआईजीएसटीपी]]) भेजता है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को निष्पादन को निलंबित करने का कारण बनता है।<ref>{{cite web |title=Job Control Signals |url=https://www.gnu.org/software/libc/manual/html_node/Job-Control-Signals.html |website=The GNU C Library}}</ref>
* Ctrl-\ क्विट सिग्नल (सिग्क्विट) भेजता है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को समाप्त करने और कोर को डंप करने का कारण बनता है।
* [[स्थिति कुंजी|Ctrl-T]] (सभी यूनिक्स पर समर्थित नहीं) इन्फो सिग्नल (सिगइन्फो) भेजता है; डिफ़ॉल्ट रूप से, और यदि कमांड द्वारा समर्थित है, तो यह ऑपरेटिंग सिस्टम को रनिंग कमांड के बारे में जानकारी दिखाने का कारण बनता है।<ref>{{cite web |title=Miscellaneous Signals |url=https://www.gnu.org/software/libc/manual/html_node/Miscellaneous-Signals.html |website=The GNU C Library}}</ref>
आधुनिक ऑपरेटिंग सिस्टम के साथ इन डिफ़ॉल्ट कुंजी संयोजनों को {{tt|[[एसटीटीवाई]]}} कमांड इसके साथ बदला जा सकता है।
 
== सिग्नलों को संभालना ==
सिग्नल हैंडलर्स को सिग्नल (2) या {{tt|सिग्नल(2)}} या {{tt|सिग्नेक्शन(2)}}सिस्टम कॉल के साथ स्थापित किया जा सकता है। यदि किसी विशेष सिग्नल के लिए सिग्नल हैंडलर स्थापित नहीं है, तो डिफ़ॉल्ट हैंडलर का उपयोग किया जाता है। अन्यथा सिग्नल इंटरसेप्ट हो जाता है और सिग्नल हैंडलर प्रायुक्त हो जाता है। प्रक्रिया हैंडलर बनाए बिना दो डिफ़ॉल्ट व्यवहार भी निर्दिष्ट कर सकती है: सिग्नल (सिग_इग्न) को अनदेखा करें और डिफ़ॉल्ट सिग्नल हैंडलर (सिग_डीएफएल) का उपयोग करें। ऐसे दो सिग्नल हैं जिन्हें इंटरसेप्ट नहीं किया जा सकता है और सिगकिल और [[SIGSTOP|सिगस्टॉप]] को हैंडल किया जा सकता है।


=== जोखिम ===
=== जोखिम ===
सिग्नल हैंडलिंग [[दौड़ की स्थिति]] के लिए असुरक्षित है। सिग्नल अतुल्यकालिक होने के कारण, सिग्नल हैंडलिंग रूटीन के निष्पादन के दौरान एक अन्य सिग्नल (समान प्रकार का भी) प्रक्रिया को दिया जा सकता है। {{tt|sigprocmask(2)}} }} कॉल का उपयोग संकेतों की डिलीवरी को ब्लॉक और अनब्लॉक करने के लिए किया जा सकता है। ब्लॉक किए गए सिग्नल अनब्लॉक होने तक प्रोसेस को डिलीवर नहीं किए जाते हैं। सिग्नल जिन्हें अनदेखा नहीं किया जा सकता है (सिगकिल और सिगस्टॉप) को अवरुद्ध नहीं किया जा सकता है।
सिग्नल हैंडलिंग [[दौड़ की स्थिति]] के लिए असुरक्षित है। सिग्नल अतुल्यकालिक होने के कारण, सिग्नल हैंडलिंग रूटीन के निष्पादन के समय अन्य सिग्नल (समान प्रकार का भी) प्रक्रिया को दिया जा सकता है। {{tt|सिग्प्रोकमास्क(2)}} कॉल का उपयोग सिग्नलों की डिलीवरी को बंद और खुला करने के लिए किया जा सकता है। ब्लॉक किए गए सिग्नल अनब्लॉक होने तक प्रक्रिया को डिलीवर नहीं किए जाते हैं। सिग्नल जिन्हें अनदेखा नहीं किया जा सकता है (सिगकिल और सिगस्टॉप) को अवरुद्ध नहीं किया जा सकता है।
 
सिग्नल किसी सिस्टम कॉल की प्रगति में रुकावट का कारण बन सकते हैं, इसे [[PCLSRing|पीसीएलएसरिंग]] गैर-पारदर्शी पुनरारंभ को प्रबंधित करने के लिए एप्लिकेशन पर छोड़ देते हैं।


सिग्नल किसी सिस्टम कॉल की प्रगति में रुकावट का कारण बन सकते हैं, इसे [[PCLSRing]] | गैर-पारदर्शी पुनरारंभ को प्रबंधित करने के लिए एप्लिकेशन पर छोड़ देते हैं।
सिग्नल हैंडलर को इस प्रकार से लिखा जाना चाहिए जिससे कोई अवांछित दुष्प्रभाव न हो, उदाहरण के लिये {{tt|[[इरनो]]}} परिवर्तन, सिग्नल मास्क परिवर्तन, सिग्नल स्वभाव परिवर्तन, और अन्य वैश्विक प्रक्रिया (कंप्यूटिंग) विशेषता परिवर्तन गैर-रीएन्ट्रेंट (उपनेमका) कार्यों का उपयोग, उदाहरण के लिए, {{tt|[[मॉलोक]]}} या {{tt|[[प्रिंटफ]]}}, अंदर के सिग्नल हैंडलर भी असुरक्षित हैं। विशेष रूप से, पॉज़िक्स विनिर्देश और लिनक्स मैन पेज {{Tt|सिग्नल(7)}} आवश्यकता है कि सिग्नल फ़ंक्शन से प्रत्यक्ष या अप्रत्यक्ष रूप से बुलाए गए सभी सिस्टम फ़ंक्शन एसिंक्स-सिग्नल सुरक्षित हैं।<ref>{{Cite web|title=The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition: System Interfaces Chapter 2|url=https://pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html#tag_02_04|access-date=2020-12-20|website=pubs.opengroup.org}}</ref><ref>{{Cite web|title=signal(7) - Linux manual page|url=https://man7.org/linux/man-pages/man7/signal.7.html|access-date=2020-12-20|website=man7.org}}</ref>  {{tt|सिग्नल-सेफ्टी(7)}} मैन पेज ऐसे एसिनसी-सिग्नल सेफ सिस्टम फ़ंक्शंस (व्यावहारिक रूप से सिस्टम कॉल) की सूची देता है, अन्यथा यह [[अपरिभाषित व्यवहार]] है।<ref>{{Cite web|title=signal-safety(7) - Linux manual page|url=https://man7.org/linux/man-pages/man7/signal-safety.7.html|access-date=2020-12-20|website=man7.org}}</ref> यह सुझाव दिया जाता है कि बस कुछ {{code|volatile sig_atomic_t}} सिग्नल हैंडलर में चर, और इसे कहीं और परीक्षण करने के लिए सेट करें।<ref>{{Cite web|title=The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition: <signal.h>|url=https://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html|access-date=2020-12-20|website=pubs.opengroup.org}}</ref>


सिग्नल हैंडलर को इस तरह से लिखा जाना चाहिए जिससे कोई अवांछित दुष्प्रभाव न हो, उदा। {{tt|[[errno]]}} परिवर्तन, सिग्नल मास्क परिवर्तन, सिग्नल स्वभाव परिवर्तन, और अन्य वैश्विक प्रक्रिया (कंप्यूटिंग) विशेषता परिवर्तन। गैर-रीएन्ट्रेंट (उपनेमका) कार्यों का उपयोग, उदाहरण के लिए, {{tt|[[malloc]]}} या {{tt|[[printf]]}}, अंदर के सिग्नल हैंडलर भी असुरक्षित हैं। विशेष रूप से, पॉज़िक्स विनिर्देश और लिनक्स मैन पेज {{Tt|signal (7)}} आवश्यकता है कि सिग्नल फ़ंक्शन से प्रत्यक्ष या अप्रत्यक्ष रूप से बुलाए गए सभी सिस्टम फ़ंक्शन एसिंक्स-सिग्नल सुरक्षित हैं।<ref>{{Cite web|title=The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition: System Interfaces Chapter 2|url=https://pubs.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html#tag_02_04|access-date=2020-12-20|website=pubs.opengroup.org}}</ref><ref>{{Cite web|title=signal(7) - Linux manual page|url=https://man7.org/linux/man-pages/man7/signal.7.html|access-date=2020-12-20|website=man7.org}}</ref>  {{tt|signal-safety(7)}} }} मैन पेज ऐसे async-सिग्नल सेफ सिस्टम फ़ंक्शंस (व्यावहारिक रूप से सिस्टम कॉल) की एक सूची देता है, अन्यथा यह एक [[अपरिभाषित व्यवहार]] है।<ref>{{Cite web|title=signal-safety(7) - Linux manual page|url=https://man7.org/linux/man-pages/man7/signal-safety.7.html|access-date=2020-12-20|website=man7.org}}</ref> यह सुझाव दिया जाता है कि बस कुछ सेट करें {{code|volatile sig_atomic_t}} सिग्नल हैंडलर में चर, और इसे कहीं और परीक्षण करने के लिए।<ref>{{Cite web|title=The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition: <signal.h>|url=https://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html|access-date=2020-12-20|website=pubs.opengroup.org}}</ref>
इसके अतिरिक्त सिग्नल हैंडलर सिग्नल को सूचि (अमूर्त डेटा प्रकार) में डाल सकते हैं और तुरंत वापस लौट सकते हैं। मुख्य धागा तब तक निर्बाध रूप से जारी रहेगा जब तक कि सूचि से सिग्नल नहीं लिए जाते, जैसे कि [[घटना पाश]] में। यहां निर्बाध का अर्थ है कि [[अवरुद्ध करना (कंप्यूटिंग)]] के संचालन समय से पहले वापस आ सकते हैं और पीसीएलएसआरिंग, जैसा कि ऊपर बताया गया है। सिग्नल को सूचि से मुख्य धागे पर संसाधित किया जाना चाहिए, न कि [[थ्रेड पूल पैटर्न]] द्वारा, क्योंकि यह अतुल्यकालिकता की समस्या को फिर से प्रस्तुत करता है। चूँकि, केवल {{tt|sig_atomic_t}} एसिनसी-सिग्नल सुरक्षित तरीके से सूचि का प्रबंधन संभव नहीं है, क्योंकि ऐसे वेरिएबल्स के लिए केवल ही रीड और राईट एटॉमिक होने की गारंटी है, इंक्रीमेंट्स या (fetch-and)-डिक्रीमेंट्स नहीं, जैसा कि लाइन के लिए आवश्यक होगा। इस प्रकार, प्रभावी रूप से, प्रति हैंडलर केवल सिग्नल को संसाधित होने तक {{tt|sig_atomic_t}} के साथ सुरक्षित रूप से सूचिबद्ध किया जा सकता है।
इसके बजाय सिग्नल हैंडलर सिग्नल को कतार (अमूर्त डेटा प्रकार) में डाल सकते हैं और तुरंत वापस लौट सकते हैं। मुख्य धागा तब तक निर्बाध रूप से जारी रहेगा जब तक कि कतार से सिग्नल नहीं लिए जाते, जैसे कि [[घटना पाश]] में। यहां निर्बाध का मतलब है कि [[अवरुद्ध करना (कंप्यूटिंग)]] के संचालन समय से पहले वापस आ सकते हैं और पीसीएलएसआरिंग, जैसा कि ऊपर बताया गया है। सिग्नल को कतार से मुख्य धागे पर संसाधित किया जाना चाहिए, न कि [[थ्रेड पूल पैटर्न]] द्वारा, क्योंकि यह अतुल्यकालिकता की समस्या को फिर से प्रस्तुत करता है। हालाँकि, केवल एक async-सिग्नल सुरक्षित तरीके से कतार का प्रबंधन संभव नहीं है {{tt|sig_atomic_t}}, क्योंकि ऐसे वेरिएबल्स के लिए केवल एक ही रीड और राईट एटॉमिक होने की गारंटी है, इंक्रीमेंट्स या (fetch-and)-डिक्रीमेंट्स नहीं, जैसा कि कतार के लिए आवश्यक होगा। इस प्रकार, प्रभावी रूप से, प्रति हैंडलर केवल एक सिग्नल को सुरक्षित रूप से कतारबद्ध किया जा सकता है {{tt|sig_atomic_t}} जब तक इसे संसाधित नहीं किया गया है।


== हार्डवेयर अपवादों के साथ संबंध ==
== हार्डवेयर अपवादों के साथ संबंध ==
एक प्रक्रिया (कंप्यूटिंग) के निष्पादन के परिणामस्वरूप हार्डवेयर अपवाद प्रबंधन की उत्पत्ति हो सकती है, उदाहरण के लिए, यदि प्रक्रिया शून्य से विभाजित करने का प्रयास करती है या [[पृष्ठ दोष]] उत्पन्न करती है।
प्रक्रिया (कंप्यूटिंग) के निष्पादन के परिणामस्वरूप हार्डवेयर अपवाद प्रबंधन की उत्पत्ति हो सकती है, उदाहरण के लिए, यदि प्रक्रिया शून्य से विभाजित करने का प्रयास करती है या [[पृष्ठ दोष]] उत्पन्न करती है।


यूनिक्स-जैसे ऑपरेटिंग सिस्टम में, यह घटना कर्नेल (कंप्यूटर साइंस) एक्सेप्शन हैंडलिंग को निष्पादित करने के लिए स्वचालित रूप से प्रोसेसर कॉन्टेक्स्ट (कंप्यूटिंग) को बदल देती है। कुछ अपवादों के मामले में, जैसे कि पृष्ठ दोष, कर्नेल के पास घटना को पूरी तरह से संभालने और प्रक्रिया के निष्पादन को फिर से शुरू करने के लिए पर्याप्त जानकारी है।
यूनिक्स-जैसे ऑपरेटिंग सिस्टम में, यह घटना कर्नेल (कंप्यूटर साइंस) एक्सेप्शन हैंडलिंग को निष्पादित करने के लिए स्वचालित रूप से प्रक्रियार कॉन्टेक्स्ट (कंप्यूटिंग) को बदल देती है। कुछ अपवादों के स्थितियों में, जैसे कि पृष्ठ दोष, कर्नेल के पास घटना को पूरी प्रकार से संभालने और प्रक्रिया के निष्पादन को फिर से शुरू करने के लिए पर्याप्त जानकारी है।


अन्य अपवाद, हालांकि, कर्नेल बुद्धिमानी से प्रक्रिया नहीं कर सकता है और इसके बजाय अपवाद हैंडलिंग ऑपरेशन को फॉल्टिंग प्रक्रिया के लिए स्थगित करना चाहिए। यह डिफरल सिग्नल मैकेनिज्म के माध्यम से प्राप्त किया जाता है, जिसमें कर्नेल प्रक्रिया को वर्तमान अपवाद के अनुरूप सिग्नल भेजता है। उदाहरण के लिए, यदि किसी प्रक्रिया ने x[[86]] [[CPU]] पर शून्य से पूर्णांक विभाजित करने का प्रयास किया है, तो एक विभाजन त्रुटि अपवाद उत्पन्न होगा और कर्नेल को प्रक्रिया में [[SIGFPE]] सिग्नल भेजने का कारण बनेगा।
अन्य अपवाद, चूंकि, कर्नेल बुद्धिमानी से प्रक्रिया नहीं कर सकता है और इसके अतिरिक्त अपवाद हैंडलिंग ऑपरेशन को फॉल्टिंग प्रक्रिया के लिए स्थगित करना चाहिए। यह डिफरल सिग्नल मैकेनिज्म के माध्यम से प्राप्त किया जाता है, जिसमें कर्नेल प्रक्रिया को वर्तमान अपवाद के अनुरूप सिग्नल भेजता है। उदाहरण के लिए, यदि किसी प्रक्रिया ने x[[86]] [[CPU|सीपीयू]] पर शून्य से पूर्णांक विभाजित करने का प्रयास किया है, तो विभाजन त्रुटि अपवाद उत्पन्न होगा और कर्नेल को प्रक्रिया में [[SIGFPE|एसआईजीएफपीई]] सिग्नल भेजने का कारण बनेगा।


इसी तरह, यदि प्रक्रिया अपने [[आभासी पता स्थान]] के बाहर मेमोरी एड्रेस तक पहुंचने का प्रयास करती है, तो कर्नेल इस उल्लंघन की प्रक्रिया को SIGSEGV ([[segfault]] सिग्नल) के माध्यम से सूचित करेगा। सिग्नल नामों और अपवादों के बीच सटीक मैपिंग स्पष्ट रूप से सीपीयू पर निर्भर है, क्योंकि आर्किटेक्चर के बीच अपवाद प्रकार भिन्न होते हैं।
इसी प्रकार, यदि प्रक्रिया अपने [[आभासी पता स्थान]] के बाहर मेमोरी एड्रेस तक पहुंचने का प्रयास करती है, तो कर्नेल इस उल्लंघन की प्रक्रिया को एसआईजीएसईजीवी ([[segfault|सेगफॉल्ट]] सिग्नल) के माध्यम से सूचित करेगा। सिग्नल नामों और अपवादों के बीच त्रुटिहीन मैपिंग स्पष्ट रूप से सीपीयू पर निर्भर है, क्योंकि आर्किटेक्चर के बीच अपवाद प्रकार भिन्न होते हैं।


== पॉज़िक्स सिग्नल ==
== पॉज़िक्स सिग्नल ==
नीचे दी गई सूची [[एकल यूनिक्स विशिष्टता]] में निर्दिष्ट संकेतों का दस्तावेजीकरण करती है। सभी संकेतों को मैक्रो स्थिरांक के रूप में परिभाषित किया गया है <code>&lt;signal.h></code> हेडर फाइल। स्थूल स्थिरांक के नाम में एक SIG [[उपसर्ग (भाषाविज्ञान)]] होता है जिसके बाद संकेत के लिए एक स्मरक नाम होता है।
नीचे दी गई सूची [[एकल यूनिक्स विशिष्टता]] में निर्दिष्ट सिग्नलों का दस्तावेजीकरण करती है। सभी सिग्नलों को मैक्रो स्थिरांक के रूप में परिभाषित किया गया है <code>&lt;signal.h></code> हेडर फाइल। स्थूल स्थिरांक के नाम में SIG [[उपसर्ग (भाषाविज्ञान)]] होता है जिसके बाद सिग्नल के लिए स्मरक नाम होता है।


; {{mono|{{vanchor|SIGABRT}}}} और {{mono|{{vanchor|SIGIOT}}}}
; {{mono|{{vanchor|सिगाबर्ट}}}} और {{mono|{{vanchor|सिगियट}}}}
: सिग्नल गर्भपात, सिग्नल इनपुट/आउटपुट ट्रैप
: सिग्नल गर्भपात, सिग्नल इनपुट/आउटपुट ट्रैप
: SIGABRT और SIGIOT सिग्नल एक प्रोसेस को भेजा जाता है जो उसे Abort (computing)|'abort', यानी टर्मिनेट करने के लिए कहता है। सिग्नल आमतौर पर प्रक्रिया द्वारा ही शुरू किया जाता है जब वह C प्रक्रिया नियंत्रण#abort| को कॉल करता है<code>abort()</code>[[सी मानक पुस्तकालय]] का कार्य, लेकिन इसे किसी अन्य सिग्नल की तरह बाहर से प्रक्रिया में भेजा जा सकता है।
:सिगाबर्ट और सिगियट सिग्नल को एक प्रक्रिया को भेजा जाता है जिससे यह पता चल सके कि इसे समाप्त करने के लिए अबो्र्ट (कंप्यूटिंग) कराया जाए। सिग्नल सामान्यतः प्रक्रिया द्वारा ही शुरू किया जाता है जब यह सी [[सी मानक पुस्तकालय]] के <code>abort()</code> फ़ंक्शन को कॉल करता है, लेकिन इसे किसी भी अन्य सिग्नल की तरह बाहर से प्रक्रिया में भेजा जा सकता है।
; {{mono|{{vanchor|SIGALRM}}}}, {{mono|{{vanchor|SIGVTALRM}}}} और {{mono|{{vanchor|SIGPROF}}}}
; {{mono|{{vanchor|सिगलरम}}}}, {{mono|{{vanchor|सिग्वाल्रम}}}} और {{mono|{{vanchor|सिगप्रोफ}}}}
: सिग्नल अलार्म, सिग्नल <!-- I think it's "virtual time"-->वीटी अलार्म, सिग्नल प्रोफाइलिंग टाइमर अलार्म
: सिग्नल अलार्म, सिग्नल वीटी अलार्म, सिग्नल प्रोफाइलिंग टाइमर अलार्म
: SIGALRM, SIGVTALRM और SIGPROF सिग्नल एक प्रक्रिया को भेजे जाते हैं जब कॉल में निर्दिष्ट समय सीमा पूर्ववर्ती 'अलार्म' सेटिंग फ़ंक्शन (जैसे <code>setitimer</code>) बीत जाता है। SIGALRM तब भेजा जाता है जब वास्तविक या घड़ी का समय समाप्त हो जाता है। SIGVTALRM तब भेजा जाता है जब प्रक्रिया द्वारा उपयोग किया जाने वाला CPU समय समाप्त हो जाता है। SIGPROF तब भेजा जाता है जब प्रक्रिया द्वारा उपयोग किया जाने वाला CPU समय और प्रक्रिया की ओर से सिस्टम द्वारा उपयोग किया जाता है, अर्थात जब प्रोफाइलिंग टाइमर समाप्त हो जाता है।
: सिगलरम, सिग्वाल्रम और सिगप्रोफ सिग्नल प्रक्रिया को भेजे जाते हैं जब कॉल में निर्दिष्ट समय सीमा पूर्ववर्ती 'अलार्म' सेटिंग फ़ंक्शन (जैसे <code>setitimer</code>) बीत जाता है। सिगलरम तब भेजा जाता है जब वास्तविक या घड़ी का समय समाप्त हो जाता है। सिग्वाल्रम तब भेजा जाता है जब प्रक्रिया द्वारा उपयोग किया जाने वाला सीपीयू समय समाप्त हो जाता है। सिगप्रोफ तब भेजा जाता है जब प्रक्रिया द्वारा उपयोग किया जाने वाला सीपीयू समय और प्रक्रिया की ओर से सिस्टम द्वारा उपयोग किया जाता है, अर्थात जब प्रोफाइलिंग टाइमर समाप्त हो जाता है।
; {{mono|{{vanchor|SIGBUS}}}}
; {{mono|{{vanchor|सिगबस}}}}
: सिग्नल बस
: सिग्नल बस
: SIGBUS सिग्नल एक प्रक्रिया को भेजा जाता है जब यह '[[बस त्रुटि]]' का कारण बनता है। सिग्नल भेजे जाने की ओर ले जाने वाली स्थितियाँ हैं, उदाहरण के लिए, गलत मेमोरी एक्सेस अलाइनमेंट या गैर-मौजूद भौतिक पता।
: सिगबस सिग्नल प्रक्रिया को भेजा जाता है जब यह '[[बस त्रुटि]]' का कारण बनता है। सिग्नल भेजे जाने की ओर ले जाने वाली स्थितियाँ हैं, उदाहरण के लिए, गलत मेमोरी एक्सेस अलाइनमेंट या गैर-उपस्थित भौतिक पता।
; {{mono|{{vanchor|SIGCHLD}}}}
; {{mono|{{vanchor|सिगचल्ड}}}}
: सिग्नल चाइल्ड
: सिग्नल चाइल्ड
: [[SIGCHLD]] सिग्नल एक प्रक्रिया को भेजा जाता है जब एक '[[बाल प्रक्रिया]]' बाहर निकलता है (सिस्टम कॉल), बाधित होता है, या बाधित होने के बाद फिर से शुरू होता है। सिग्नल का एक सामान्य उपयोग ऑपरेटिंग सिस्टम को एक स्पष्ट कॉल के बिना इसकी समाप्ति के बाद चाइल्ड प्रोसेस द्वारा उपयोग किए जाने वाले संसाधनों को साफ करने का निर्देश देना है। <code>[[wait (system call)|wait]]</code> सिस्टम कॉल।
:[[SIGCHLD|सिगचल्ड]] सिग्नल प्रक्रिया को भेजा जाता है जब '[[बाल प्रक्रिया]]' बाहर निकलता है (सिस्टम कॉल), बाधित होता है, या बाधित होने के बाद फिर से शुरू होता है। सिग्नल का एक सामान्य उपयोग यह है कि ऑपरेटिंग सिस्टम को <code>[[wait (system call)|wait]]</code> सिस्टम कॉल के लिए स्पष्ट कॉल के बिना समाप्ति के बाद एक बच्चे की प्रक्रिया द्वारा उपयोग किए जाने वाले संसाधनों को साफ करने के लिए ऑपरेटिंग सिस्टम को निर्देश देना है।
; {{mono|{{vanchor|SIGCONT}}}}
; {{mono|{{vanchor|सिगकॉन्ट}}}}
: सिगनल जारी
: सिगनल जारी
: [[SIGCONT]] सिग्नल ऑपरेटिंग सिस्टम को SIGSTOP या SIGTSTP सिग्नल द्वारा पहले रोकी गई प्रक्रिया को 'जारी रखने' (पुनरारंभ) करने का निर्देश देता है। इस सिग्नल का एक महत्वपूर्ण उपयोग [[यूनिक्स खोल]] में [[नौकरी नियंत्रण (यूनिक्स)]] में है।
: [[SIGCONT|सिगकॉन्ट]] सिग्नल ऑपरेटिंग सिस्टम को सिगस्टॉप या एसआईजीएसटीपी सिग्नल द्वारा पहले रोकी गई प्रक्रिया को 'जारी रखने' (पुनरारंभ) करने का निर्देश देता है। इस सिग्नल का महत्वपूर्ण उपयोग [[यूनिक्स खोल]] में [[नौकरी नियंत्रण (यूनिक्स)]] में है।
; {{mono|{{vanchor|SIGFPE}}}}
; {{mono|{{vanchor|सिग्फ्पे}}}}
: सिग्नल [[फ़्लोटिंग-पॉइंट त्रुटि]]
: सिग्नल [[फ़्लोटिंग-पॉइंट त्रुटि]]
: SIGFPE सिग्नल एक प्रक्रिया को भेजा जाता है जब फ्लोटिंग पॉइंट या पूर्णांक अंकगणितीय हार्डवेयर में एक असाधारण (लेकिन जरूरी नहीं कि गलत) स्थिति का पता लगाया गया हो। इसमें शून्य से विभाजन, फ्लोटिंग पॉइंट अंडरफ़्लो या ओवरफ़्लो, पूर्णांक ओवरफ़्लो, एक अमान्य ऑपरेशन या एक अचूक संगणना शामिल हो सकती है। हार्डवेयर के आधार पर व्यवहार भिन्न हो सकता है।
: एसआईजीएफपीई सिग्नल प्रक्रिया को भेजा जाता है जब फ्लोटिंग पॉइंट या पूर्णांक अंकगणितीय हार्डवेयर में असाधारण (लेकिन जरूरी नहीं कि गलत) स्थिति का पता लगाया गया हो। इसमें शून्य से विभाजन, फ्लोटिंग पॉइंट अंडरफ़्लो या ओवरफ़्लो, पूर्णांक ओवरफ़्लो, अमान्य ऑपरेशन या अचूक संगणना सम्मिलित हो सकती है। हार्डवेयर के आधार पर व्यवहार भिन्न हो सकता है।
; {{mono|{{vanchor|SIGHUP}}}}
; {{mono|{{vanchor|सिगहप}}}}
: सिग्नल हैंगअप
: सिग्नल हैंगअप
: किसी प्रोसेस को [[SIGHUP]] सिग्नल तब भेजा जाता है जब उसका कंट्रोलिंग टर्मिनल बंद होता है। यह मूल रूप से [[RS-232]] ड्रॉप (एक 'हैंगअप') की प्रक्रिया को सूचित करने के लिए डिज़ाइन किया गया था। आधुनिक प्रणालियों में, इस संकेत का आमतौर पर मतलब होता है कि नियंत्रक [[टर्मिनल एमुलेटर]] बंद कर दिया गया है।<ref name="linux-signal7">{{cite web |url=https://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html|title=signal(7) |work=[[Linux Programmer's Manual]] (version 3.22)|author=Michael Kerrisk | date=25 July 2009|publisher=The Linux Kernel Archives|access-date=23 September 2009}}</ref> कई डेमॉन (सॉफ़्टवेयर) (जिनके पास कोई नियंत्रक टर्मिनल नहीं है) इस सिग्नल की प्राप्ति की व्याख्या उनकी कॉन्फ़िगरेशन फ़ाइलों को फिर से लोड करने और बाहर निकलने के बजाय उनके लॉगफ़ाइल्स को फ़्लश/पुनः खोलने के अनुरोध के रूप में करते हैं।<ref>{{cite web|title=perlipc(1)|url=https://perldoc.perl.org/perlipc.html#Handling-the-SIGHUP-Signal-in-Daemons|work=Perl Programmers Reference Guide, version 5.18|publisher=perldoc.perl.org - Official documentation for the Perl programming language|access-date=21 September 2013}}</ref> [[nohup]] एक कमांड है जो सिग्नल को अनदेखा करने के लिए कमांड बनाती है।
: किसी प्रक्रिया को [[SIGHUP|सिगहप]] सिग्नल तब भेजा जाता है जब उसका कंट्रोलिंग टर्मिनल बंद होता है। यह मूल रूप से [[RS-232]] ड्रॉप ('हैंगअप') की प्रक्रिया को सूचित करने के लिए डिज़ाइन किया गया था। आधुनिक प्रणालियों में, इस सिग्नल का सामान्यतः अर्थ होता है कि नियंत्रक [[टर्मिनल एमुलेटर]] बंद कर दिया गया है।<ref name="linux-signal7">{{cite web |url=https://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html|title=signal(7) |work=[[Linux Programmer's Manual]] (version 3.22)|author=Michael Kerrisk | date=25 July 2009|publisher=The Linux Kernel Archives|access-date=23 September 2009}}</ref> कई डेमॉन (सॉफ़्टवेयर) (जिनके पास कोई नियंत्रक टर्मिनल नहीं है) इस सिग्नल की प्राप्ति की व्याख्या उनकी कॉन्फ़िगरेशन फ़ाइलों को फिर से लोड करने और बाहर निकलने के अतिरिक्त उनके लॉगफ़ाइल्स को फ़्लश/पुनः खोलने के अनुरोध के रूप में करते हैं।<ref>{{cite web|title=perlipc(1)|url=https://perldoc.perl.org/perlipc.html#Handling-the-SIGHUP-Signal-in-Daemons|work=Perl Programmers Reference Guide, version 5.18|publisher=perldoc.perl.org - Official documentation for the Perl programming language|access-date=21 September 2013}}</ref> एक [[nohup|नोहअप]] कमांड है जो सिग्नल को अनदेखा करने के लिए कमांड बनाती है।
; {{mono|{{vanchor|SIGILL}}}}
; {{mono|{{vanchor|सिगिल}}}}
: सिग्नल अवैध
: सिग्नल अवैध
: SIGILL सिग्नल एक प्रक्रिया को भेजा जाता है जब यह एक 'अवैध', विकृत, अज्ञात, या विशेषाधिकार प्राप्त [[निर्देश (कंप्यूटर विज्ञान)]] को निष्पादित करने का प्रयास करता है।
: सिगिल सिग्नल प्रक्रिया को भेजा जाता है जब यह 'अवैध', विकृत, अज्ञात, या विशेषाधिकार प्राप्त [[निर्देश (कंप्यूटर विज्ञान)]] को निष्पादित करने का प्रयास करता है।
; {{mono|{{vanchor|SIGINT}}}}
; {{mono|{{vanchor|सिगिंट}}}}
: सिग्नल व्यवधान
: सिग्नल व्यवधान
: जब कोई उपयोगकर्ता प्रक्रिया को 'बाधित' करना चाहता है तो SIGINT सिग्नल उसके नियंत्रण टर्मिनल द्वारा एक प्रक्रिया को भेजा जाता है। यह आमतौर पर Ctrl-C| दबाकर शुरू किया जाता है{{keypress|Ctrl|C}}, लेकिन कुछ सिस्टम पर, डिलीट कुंजी कैरेक्टर या ब्रेक कुंजी कुंजी का उपयोग किया जा सकता है।<ref>{{cite web | url=https://www.cons.org/cracauer/sigint.html | title=Proper handling of SIGINT and SIGQUIT | access-date=6 October 2012}}</ref>
: जब कोई उपयोगकर्ता प्रक्रिया को 'बाधित' करना चाहता है तो सिगिनट सिग्नल उसके नियंत्रण टर्मिनल द्वारा प्रक्रिया को भेजा जाता है। यह सामान्यतः {{keypress|Ctrl|C}} दबाकर शुरू किया जाता है, लेकिन कुछ सिस्टम पर, डिलीट कुंजी कैरेक्टर या ब्रेक कुंजी कुंजी का उपयोग किया जा सकता है।<ref>{{cite web | url=https://www.cons.org/cracauer/sigint.html | title=Proper handling of SIGINT and SIGQUIT | access-date=6 October 2012}}</ref>
; {{mono|{{vanchor|SIGKILL}}}}
; {{mono|{{vanchor|सिग्किल्ल}}}}
: सिग्नल मारो
: सिग्नल मारो
: SIGKILL सिग्नल एक प्रक्रिया को भेजा जाता है जिससे वह तुरंत समाप्त हो जाए ('किल')। SIGTERM और SIGINT के विपरीत, इस सिग्नल को पकड़ा या अनदेखा नहीं किया जा सकता है, और प्राप्त करने वाली प्रक्रिया इस सिग्नल को प्राप्त करने पर कोई सफाई नहीं कर सकती है। निम्नलिखित अपवाद लागू होते हैं:
: सिगकिल सिग्नल प्रक्रिया को भेजा जाता है जिससे वह तुरंत समाप्त हो जाए ('किल')। सिगटरम और सिगिनट के विपरीत, इस सिग्नल को पकड़ा या अनदेखा नहीं किया जा सकता है, और प्राप्त करने वाली प्रक्रिया इस सिग्नल को प्राप्त करने पर कोई सफाई नहीं कर सकती है। निम्नलिखित अपवाद प्रायुक्त होते हैं:
:* [[ज़ोंबी प्रक्रिया]]ओं को नहीं मारा जा सकता है क्योंकि वे पहले से ही मर चुके हैं और उनकी मूल प्रक्रियाओं का इंतजार कर रहे हैं।
:* [[ज़ोंबी प्रक्रिया]]ओं को नहीं मारा जा सकता है क्योंकि वे पहले से ही मर चुके हैं और उनकी मूल प्रक्रियाओं का इंतजार कर रहे हैं।
:* जो प्रक्रियाएँ अवरुद्ध अवस्था में हैं, वे तब तक नहीं मरेंगी जब तक कि वे फिर से जाग न जाएँ।
:* जो प्रक्रियाएँ अवरुद्ध अवस्था में हैं, वे तब तक नहीं मरेंगी जब तक कि वे फिर से जाग न जाएँ।
:* [[init]] प्रक्रिया विशेष है: इसे ऐसे संकेत नहीं मिलते हैं कि यह संभालना नहीं चाहता है, और इस प्रकार यह SIGKILL को अनदेखा कर सकता है।<ref>https://manpages.ubuntu.com/manpages/zesty/man2/kill.2.html section NOTES</ref> इस नियम का एक अपवाद है जबकि Linux पर init [[ptrace]]d है।<ref>{{cite web|url=https://stackoverflow.com/a/21031583|title=SIGKILL init process (PID 1)|website=Stack Overflow}}</ref><ref>{{cite web|url=https://unix.stackexchange.com/a/308429|title=Can root kill init process?|website=Unix & Linux Stack Exchange}}</ref>
:* [[init|इनिट]] प्रक्रिया विशेष है: इसे ऐसे सिग्नल नहीं मिलते हैं कि यह संभालना नहीं चाहता है, और इस प्रकार यह सिगकिल को अनदेखा कर सकता है।<ref>https://manpages.ubuntu.com/manpages/zesty/man2/kill.2.html section NOTES</ref> इस नियम का अपवाद है जबकि लिनक्स पर इनिट [[ptrace|पॉट्रेसेड]] है।<ref>{{cite web|url=https://stackoverflow.com/a/21031583|title=SIGKILL init process (PID 1)|website=Stack Overflow}}</ref><ref>{{cite web|url=https://unix.stackexchange.com/a/308429|title=Can root kill init process?|website=Unix & Linux Stack Exchange}}</ref>
:* एक निर्बाध नींद प्रक्रिया SIGKILL भेजे जाने पर भी समाप्त (और इसके संसाधनों को मुक्त) नहीं कर सकती है। यह उन कुछ मामलों में से एक है जिसमें एक अस्थायी सॉफ़्टवेयर समस्या को हल करने के लिए UNIX सिस्टम को रीबूट करना पड़ सकता है।
:* निर्बाध नींद प्रक्रिया सिगकिल भेजे जाने पर भी समाप्त (और इसके संसाधनों को मुक्त) नहीं कर सकती है। यह उन कुछ स्थितियों में से है जिसमें अस्थायी सॉफ़्टवेयर समस्या का समाधान करने के लिए यूनिक्स सिस्टम को रीबूट करना पड़ सकता है।
: SIGKILL का उपयोग अंतिम उपाय के रूप में किया जाता है जब अधिकांश सिस्टम [[शटडाउन (कंप्यूटिंग)]] प्रक्रियाओं में प्रक्रियाओं को समाप्त करते हैं यदि यह स्वेच्छा से SIGTERM के जवाब में बाहर नहीं निकलता है। कंप्यूटर शटडाउन प्रक्रिया को गति देने के लिए, Mac OS X 10.6, उर्फ ​​Mac OS X v10.6, SIGKILL को उन अनुप्रयोगों को भेजेगा, जिन्होंने स्वयं को साफ चिह्नित किया है, जिसके परिणामस्वरूप तेजी से शटडाउन समय, संभवतः, कोई बुरा प्रभाव नहीं है।<ref>{{cite web | url = https://developer.apple.com/mac/library/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_6.html#//apple_ref/doc/uid/TP40008898-SW22 | title = Mac Dev Center: What's New in Mac OS X: Mac OS X v10.6 | date = 2009-08-28 | access-date =18 November 2017}}</ref> आदेश {{code|killall -9}} एक समान, जबकि खतरनाक प्रभाव होता है, जब निष्पादित किया जाता है उदा। लिनक्स में; यह प्रोग्राम को सहेजे न गए डेटा को सहेजने नहीं देता है। इसके पास अन्य विकल्प हैं, और कोई नहीं के साथ, सुरक्षित SIGTERM सिग्नल का उपयोग करता है।
: सिगकिल का उपयोग अंतिम उपाय के रूप में किया जाता है जब अधिकांश सिस्टम [[शटडाउन (कंप्यूटिंग)]] प्रक्रियाओं में प्रक्रियाओं को समाप्त करते हैं यदि यह स्वेच्छा से सिगटरम के उत्तर में बाहर नहीं निकलता है। कंप्यूटर शटडाउन प्रक्रिया को गति देने के लिए, मैक ओएस X 10.6, या ​​मैक ओएस एक्स v10.6, सिगकिल को उन अनुप्रयोगों को भेजेगा, जिन्होंने स्वयं को साफ चिह्नित किया है, जिसके परिणामस्वरूप तेजी से शटडाउन समय, संभवतः, कोई बुरा प्रभाव नहीं है।<ref>{{cite web | url = https://developer.apple.com/mac/library/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_6.html#//apple_ref/doc/uid/TP40008898-SW22 | title = Mac Dev Center: What's New in Mac OS X: Mac OS X v10.6 | date = 2009-08-28 | access-date =18 November 2017}}</ref> कमांड {{code|killall -9}} में एक समान है, जबकि खतरनाक प्रभाव, जब निष्पादित किया जाता है। लिनक्स में; यह कार्यक्रमों को अनसुना डेटा को बचाने नहीं देता है। इसके पास अन्य विकल्प हैं, और कोई भी नहीं, सुरक्षित सिगर्म सिग्नल का उपयोग करता है।
; {{mono|{{vanchor|SIGPIPE}}}}
; {{mono|{{vanchor|सिग्पिपे}}}}
: सिग्नल पाइप
: सिग्नल पाइप
: SIGPIPE सिग्नल एक प्रक्रिया को भेजा जाता है जब यह एक पाइपलाइन (यूनिक्स) को दूसरे छोर से जुड़ी प्रक्रिया के बिना लिखने का प्रयास करता है।
: एसआईजीपीआईपीई सिग्नल प्रक्रिया को भेजा जाता है जब यह पाइपलाइन (यूनिक्स) को दूसरे छोर से जुड़ी प्रक्रिया के बिना लिखने का प्रयास करता है।
; {{mono|{{vanchor|SIGPOLL}}}}
; {{mono|{{vanchor|सिग्पोल्ल}}}}
: सिग्नल पोल
: सिग्नल पोल
: स्पष्ट रूप से देखे गए फ़ाइल डिस्क्रिप्टर पर कोई घटना होने पर SIGPOLL सिग्नल भेजा जाता है।<ref>{{cite web | title=ioctl - controls a STREAM device | work=[[POSIX]] system call specification | publisher=[[The Open Group]] | url=https://pubs.opengroup.org/onlinepubs/9699919799/functions/ioctl.html | access-date=19 June 2015}}</ref> इसका प्रभावी ढंग से उपयोग अतुल्यकालिक I/O अनुरोध करने की ओर जाता है क्योंकि कर्नेल कॉल करने वाले के स्थान पर डिस्क्रिप्टर को पोल करेगा। यह सक्रिय [[मतदान (कंप्यूटर विज्ञान)]] का विकल्प प्रदान करता है।
: स्पष्ट रूप से देखे गए फ़ाइल डिस्क्रिप्टर पर कोई घटना होने पर सिगपोल सिग्नल भेजा जाता है।<ref>{{cite web | title=ioctl - controls a STREAM device | work=[[POSIX]] system call specification | publisher=[[The Open Group]] | url=https://pubs.opengroup.org/onlinepubs/9699919799/functions/ioctl.html | access-date=19 June 2015}}</ref> इसका प्रभावी रूप से उपयोग अतुल्यकालिक I/O अनुरोध करने की ओर जाता है क्योंकि कर्नेल कॉल करने वाले के स्थान पर डिस्क्रिप्टर को पोल करेगा। यह सक्रिय [[मतदान (कंप्यूटर विज्ञान)]] का विकल्प प्रदान करता है।
; {{mono|{{vanchor|SIGRTMIN}}}} को {{mono|{{vanchor|SIGRTMAX}}}}
; {{mono|{{vanchor|सिगर्टमिन}}}} को {{mono|{{vanchor|सिगर्टमैक्स}}}}
: सिग्नल रीयल-टाइम न्यूनतम, सिग्नल रीयल-टाइम अधिकतम
: सिग्नल रीयल-टाइम न्यूनतम, सिग्नल रीयल-टाइम अधिकतम
: SIGRTMIN से SIGRTMAX सिग्नल का उपयोग उपयोगकर्ता-परिभाषित उद्देश्यों के लिए किया जाना है। वे 'वास्तविक समय' संकेत हैं।
: सिगर्टमिन से सिगर्टमैक्स सिग्नल का उपयोग उपयोगकर्ता-परिभाषित उद्देश्यों के लिए किया जाना है। वे 'वास्तविक समय' सिग्नल हैं।
; {{mono|{{vanchor|SIGQUIT}}}}
; {{mono|{{vanchor|सिग्क्विट}}}}
: सिगनल बंद
: सिगनल बंद
: SIGQUIT सिग्नल को उसके नियंत्रण टर्मिनल द्वारा एक प्रक्रिया में भेजा जाता है जब उपयोगकर्ता अनुरोध करता है कि प्रक्रिया 'छोड़' और एक कोर डंप करें।
: सिग्क्विट सिग्नल को उसके नियंत्रण टर्मिनल द्वारा प्रक्रिया में भेजा जाता है जब उपयोगकर्ता अनुरोध करता है कि प्रक्रिया 'छोड़' और कोर डंप करें।
; {{mono|{{vanchor|SIGSEGV}}}}
; {{mono|{{vanchor|सिगसेग}}}}
: सिग्नल विभाजन उल्लंघन
: सिग्नल विभाजन उल्लंघन
: SIGSEGV सिग्नल एक प्रक्रिया को भेजा जाता है जब यह एक अमान्य वर्चुअल मेमोरी संदर्भ, या [[विखंडन दोष]] करता है, यानी जब यह 'सेगमेंटेशन उल्लंघन' करता है।<ref>{{Cite web|url=https://support.microfocus.com/kb/doc.php?id=7001662|title=What is a "segmentation violation"?|website=support.microfocus.com|access-date=2018-11-22}}</ref>
: एसआईजीएसईजीवी सिग्नल प्रक्रिया को भेजा जाता है जब यह अमान्य वर्चुअल मेमोरी संदर्भ, या [[विखंडन दोष]] करता है, यानी जब यह 'सेगमेंटेशन उल्लंघन' करता है।<ref>{{Cite web|url=https://support.microfocus.com/kb/doc.php?id=7001662|title=What is a "segmentation violation"?|website=support.microfocus.com|access-date=2018-11-22}}</ref>
; {{mono|{{vanchor|SIGSTOP}}}}
; {{mono|{{vanchor|सिगस्टॉप}}}}
: सिग्नल स्टॉप
: सिग्नल स्टॉप
: SIGSTOP सिग्नल ऑपरेटिंग सिस्टम को बाद में फिर से शुरू करने के लिए एक प्रक्रिया को 'स्टॉप' करने का निर्देश देता है।
: सिगस्टॉप सिग्नल ऑपरेटिंग सिस्टम को बाद में फिर से शुरू करने के लिए प्रक्रिया को 'स्टॉप' करने का निर्देश देता है।
; {{mono|{{vanchor|SIGSYS}}}}
; {{mono|{{vanchor|सिगसिस}}}}
: सिग्नल सिस्टम कॉल
: सिग्नल सिस्टम कॉल
: SIGSYS सिग्नल एक प्रक्रिया को भेजा जाता है जब यह सिस्टम कॉल के लिए खराब तर्क पास करता है। व्यवहार में, इस तरह का संकेत शायद ही कभी सामने आता है क्योंकि अनुप्रयोग उनके लिए कॉल करने के लिए पुस्तकालयों (जैसे [[सी मानक पुस्तकालय]]) पर भरोसा करते हैं। SIGSYS उन अनुप्रयोगों द्वारा प्राप्त किया जा सकता है जो उन्हें प्रतिबंधित करने के लिए कॉन्फ़िगर किए गए Linux [[Seccomp]] सुरक्षा नियमों का उल्लंघन करते हैं। SIGSYS का उपयोग विदेशी सिस्टम कॉल का अनुकरण करने के लिए भी किया जा सकता है, उदा। लिनक्स पर विंडोज सिस्टम कॉल का अनुकरण करें।<ref>{{Cite web|title=Syscall User Dispatch – The Linux Kernel documentation|url=https://www.kernel.org/doc/html/latest/admin-guide/syscall-user-dispatch.html|access-date=2021-02-11|website=kernel.org}}</ref>
: सिगसिस सिग्नल प्रक्रिया को भेजा जाता है जब यह सिस्टम कॉल के लिए खराब तर्क पास करता है। व्यवहार में, इस प्रकार का सिग्नल संभवतः ही कभी सामने आता है क्योंकि अनुप्रयोग उनके लिए कॉल करने के लिए पुस्तकालयों (जैसे [[सी मानक पुस्तकालय]]) पर विश्वास करते हैं। सिगसिस उन अनुप्रयोगों द्वारा प्राप्त किया जा सकता है जो उन्हें प्रतिबंधित करने के लिए कॉन्फ़िगर किए गए लिनक्स [[Seccomp|सेककॉम्प]] सुरक्षा नियमों का उल्लंघन करते हैं। सिगसिस का उपयोग विदेशी सिस्टम कॉल का अनुकरण करने के लिए भी किया जा सकता है, उदा। लिनक्स पर विंडोज सिस्टम कॉल का अनुकरण करें।<ref>{{Cite web|title=Syscall User Dispatch – The Linux Kernel documentation|url=https://www.kernel.org/doc/html/latest/admin-guide/syscall-user-dispatch.html|access-date=2021-02-11|website=kernel.org}}</ref>
; {{mono|{{vanchor|SIGTERM}}}}
; {{mono|{{vanchor|सिगटरम}}}}
: सिग्नल समाप्त
: सिग्नल समाप्त
: SIGTERM सिग्नल को इसकी 'समाप्ति' का अनुरोध करने के लिए एक प्रक्रिया में भेजा जाता है। SIGKILL सिग्नल के विपरीत, इसे प्रक्रिया द्वारा पकड़ा और व्याख्या या अनदेखा किया जा सकता है। यह प्रक्रिया को संसाधनों को जारी करने और उपयुक्त होने पर स्थिति को बचाने के लिए अच्छा समापन करने की अनुमति देता है। SIGINT लगभग SIGTERM के समान है।
: सिगटरम सिग्नल को इसकी 'समाप्ति' का अनुरोध करने के लिए प्रक्रिया में भेजा जाता है। सिगकिल सिग्नल के विपरीत, इसे प्रक्रिया द्वारा पकड़ा और व्याख्या या अनदेखा किया जा सकता है। यह प्रक्रिया को संसाधनों को जारी करने और उपयुक्त होने पर स्थिति को बचाने के लिए अच्छा समापन करने की अनुमति देता है। सिगिनट लगभग सिगटरम के समान है।
; {{mono|{{vanchor|SIGTSTP}}}}
; {{mono|{{vanchor|सिगस्टटीपी}}}}
: सिग्नल टर्मिनल स्टॉप
: सिग्नल टर्मिनल स्टॉप
: SIGTSTP सिग्नल को 'स्टॉप' ('t'erminal 'st'o'p') के लिए अनुरोध करने के लिए 'टर्मिनल' को नियंत्रित करने के लिए एक प्रक्रिया को भेजा जाता है। यह आमतौर पर उपयोगकर्ता द्वारा Ctrl-Z | दबाकर शुरू किया जाता है{{keypress|Ctrl|Z}}. SIGSTOP के विपरीत, प्रक्रिया सिग्नल हैंडलर को सिग्नल के लिए पंजीकृत कर सकती है या सिग्नल को अनदेखा कर सकती है।
: एसआईजीएसटीपी सिग्नल को 'स्टॉप' ('t'erminal 'st'o'p') के लिए अनुरोध करने के लिए 'टर्मिनल' को नियंत्रित करने के लिए प्रक्रिया को भेजा जाता है। यह सामान्यतः उपयोगकर्ता द्वारा {{keypress|Ctrl|Z}} दबाकर शुरू किया जाता है. सिगस्टॉप के विपरीत, प्रक्रिया सिग्नल हैंडलर को सिग्नल के लिए पंजीकृत कर सकती है या सिग्नल को अनदेखा कर सकती है।
; {{mono|{{vanchor|SIGTTIN}}}} और {{mono|{{vanchor|SIGTTOU}}}}
; {{mono|{{vanchor|सिगटिन}}}} और {{mono|{{vanchor|सिगटू}}}}
: [[SIGTTIN]] और [[SIGTTOU]] सिग्नल एक प्रक्रिया को तब भेजे जाते हैं जब वह [[पृष्ठभूमि प्रक्रिया]] के दौरान टेलेटाइपराइटर से क्रमशः पढ़ने या लिखने का प्रयास करती है। आमतौर पर, ये संकेत केवल जॉब कंट्रोल (यूनिक्स) के तहत प्रक्रियाओं द्वारा प्राप्त होते हैं; [[डेमन (कंप्यूटर सॉफ्टवेयर)]] में नियंत्रक टर्मिनल नहीं होते हैं और इसलिए, इन संकेतों को कभी प्राप्त नहीं करना चाहिए।
: [[SIGTTIN|सिगटिन]] और [[SIGTTOU|सिगटू]] सिग्नल प्रक्रिया को तब भेजे जाते हैं जब वह [[पृष्ठभूमि प्रक्रिया]] के समय टेलेटाइपराइटर से क्रमशः पढ़ने या लिखने का प्रयास करती है। सामान्यतः, ये सिग्नल केवल जॉब कंट्रोल (यूनिक्स) के अनुसार प्रक्रियाओं द्वारा प्राप्त होते हैं; [[डेमन (कंप्यूटर सॉफ्टवेयर)]] में नियंत्रक टर्मिनल नहीं होते हैं और इसलिए, इन सिग्नलों को कभी प्राप्त नहीं करना चाहिए।
; {{mono|{{vanchor|SIGTRAP}}}}
; {{mono|{{vanchor|सिगट्रैप}}}}
: सिग्नल ट्रैप
: सिग्नल ट्रैप
: SIGTRAP सिग्नल एक प्रक्रिया को भेजा जाता है जब एक अपवाद (या 'ट्रैप') होता है: एक शर्त जिसके बारे में एक [[डिबगर]] ने सूचित करने का अनुरोध किया है{{snd}} उदाहरण के लिए, जब एक विशेष उपनेमका निष्पादित किया जाता है, या जब एक विशेष [[चर (प्रोग्रामिंग)]] मान बदलता है।
: सिगट्रैप सिग्नल प्रक्रिया को भेजा जाता है जब अपवाद (या 'ट्रैप') होता है: शर्त जिसके बारे में [[डिबगर]] ने सूचित करने का अनुरोध किया है{{snd}} उदाहरण के लिए, जब विशेष उपनेमका निष्पादित किया जाता है, या जब विशेष [[चर (प्रोग्रामिंग)]] मान बदलता है।
; {{mono|{{vanchor|SIGURG}}}}
; {{mono|{{vanchor|सिगट्रैप}}}}
: तत्काल संकेत
: तत्काल सिग्नल
: [[SIGURG]] सिग्नल एक प्रक्रिया को भेजा जाता है जब एक [[बर्कले सॉकेट]] में पढ़ने के लिए 'अत्यावश्यक' या [[आउट-ऑफ-बैंड डेटा]] उपलब्ध होता है।
: [[SIGURG|सिगर्ग]] सिग्नल प्रक्रिया को भेजा जाता है जब [[बर्कले सॉकेट]] में पढ़ने के लिए 'अत्यावश्यक' या [[आउट-ऑफ-बैंड डेटा]] उपलब्ध होता है।
; {{mono|{{vanchor|SIGUSR1}}}} और {{mono|{{vanchor|SIGUSR2}}}}
; {{mono|{{vanchor|सिगुसर1}}}} और {{mono|{{vanchor|सिगुसर2}}}}
: सिग्नल यूजर 1, सिग्नल यूजर 2
: सिग्नल यूजर 1, सिग्नल यूजर 2
: SIGUSR1 और SIGUSR2 सिग्नल 'उपयोगकर्ता-परिभाषित स्थितियों' को इंगित करने के लिए एक प्रक्रिया में भेजे जाते हैं।
: सिगुसर1 और सिगुसर2 सिग्नल 'उपयोगकर्ता-परिभाषित स्थितियों' को इंगित करने के लिए प्रक्रिया में भेजे जाते हैं।
; {{mono|{{vanchor|SIGXCPU}}}}
; {{mono|{{vanchor|सिग्क्ससीपीयू}}}}
: सिग्नल CPU से अधिक हो गया
: सिग्नल सीपीयू से अधिक हो गया
: SIGXCPU सिग्नल एक प्रक्रिया को भेजा जाता है जब उसने 'CPU' का उपयोग उस अवधि के लिए किया है जो एक निश्चित पूर्व निर्धारित उपयोगकर्ता-सेटटेबल मान से 'अधिक' है।<ref name="setrlimit_posix_spec">{{cite web | title = getrlimit, setrlimit - अधिकतम संसाधन खपत को नियंत्रित करें| work=[[POSIX]] system call specification | publisher=[[The Open Group]] | url=https://pubs.opengroup.org/onlinepubs/009695399/functions/getrlimit.html | access-date = 10 September 2009}}</ref> SIGXCPU सिग्नल का आगमन प्राप्त करने की प्रक्रिया को किसी भी मध्यवर्ती परिणाम को जल्दी से बचाने और SIGKILL सिग्नल का उपयोग करके ऑपरेटिंग सिस्टम द्वारा समाप्त किए जाने से पहले इनायत से बाहर निकलने का मौका प्रदान करता है।
: सिग्क्ससीपीयू सिग्नल प्रक्रिया को भेजा जाता है जब उसने 'सीपीयू' का उपयोग उस अवधि के लिए किया है जो निश्चित पूर्व निर्धारित उपयोगकर्ता-सेटटेबल मान से 'अधिक' है।<ref name="setrlimit_posix_spec">{{cite web | title = getrlimit, setrlimit - अधिकतम संसाधन खपत को नियंत्रित करें| work=[[POSIX]] system call specification | publisher=[[The Open Group]] | url=https://pubs.opengroup.org/onlinepubs/009695399/functions/getrlimit.html | access-date = 10 September 2009}}</ref> सिग्क्ससीपीयू सिग्नल का आगमन प्राप्त करने की प्रक्रिया को किसी भी मध्यवर्ती परिणाम को जल्दी से बचाने और सिगकिल सिग्नल का उपयोग करके ऑपरेटिंग सिस्टम द्वारा समाप्त किए जाने से पहले इनायत से बाहर निकलने का मौका प्रदान करता है।
; {{mono|{{vanchor|SIGXFSZ}}}}
; {{mono|{{vanchor|सिगएक्सएफएसजेड}}}}
: अतिरिक्त फ़ाइल आकार का संकेत दें
: अतिरिक्त फ़ाइल आकार का सिग्नल दें
: SIGXFSZ सिग्नल एक प्रक्रिया को भेजा जाता है जब यह एक 'फ़ाइल' बढ़ती है जो अधिकतम अनुमत 'आकार' से 'अधिक' होती है।
: सिगएक्सएफएसजेड सिग्नल प्रक्रिया को भेजा जाता है जब यह 'फ़ाइल' बढ़ती है जो अधिकतम अनुमत 'आकार' से 'अधिक' होती है।
; {{mono|{{vanchor|SIGWINCH}}}}
; {{mono|{{vanchor|सिग्विंच}}}}
: सिग्नल विंडो परिवर्तन
: सिग्नल विंडो परिवर्तन
: SIGWINCH सिग्नल एक प्रक्रिया को भेजा जाता है जब इसका नियंत्रक टर्मिनल अपना आकार बदलता है (एक 'wind'dow' ch'ange)<ref>{{cite web |url=http://austingroupbugs.net/view.php?id=1151 |title= 0001151: Introduce new signal SIGWINCH and functions tcsetsize(), tcgetsize() to get/set terminal window size  |last=Clausecker |first=Robert |date=2017-06-19 |website=Austin Group Defect Tracker |publisher=[[Austin Group]] |access-date=2017-10-12 |quote=Accepted As Marked}}</ref>
: सिग्विंच सिग्नल प्रक्रिया को भेजा जाता है जब इसका नियंत्रक टर्मिनल अपना आकार ('wind'dow' ch'ange) बदलता है।<ref>{{cite web |url=http://austingroupbugs.net/view.php?id=1151 |title= 0001151: Introduce new signal SIGWINCH and functions tcsetsize(), tcgetsize() to get/set terminal window size  |last=Clausecker |first=Robert |date=2017-06-19 |website=Austin Group Defect Tracker |publisher=[[Austin Group]] |access-date=2017-10-12 |quote=Accepted As Marked}}</ref>




=== डिफ़ॉल्ट कार्रवाई ===
=== डिफ़ॉल्ट कार्रवाई ===
एक प्रक्रिया [[सी सिग्नल हैंडलिंग]] को परिभाषित कर सकती है। यदि कोई प्रक्रिया सिग्नल के व्यवहार को परिभाषित नहीं करती है, तो उस सिग्नल के लिए डिफ़ॉल्ट हैंडलर का उपयोग किया जा रहा है। नीचे दी गई तालिका में POSIX- संगत UNIX सिस्टम के लिए कुछ डिफ़ॉल्ट क्रियाओं की सूची दी गई है, जैसे [[FreeBSD]], [[OpenBSD]] और [[Linux]]।
प्रक्रिया [[सी सिग्नल हैंडलिंग]] को परिभाषित कर सकती है। यदि कोई प्रक्रिया सिग्नल के व्यवहार को परिभाषित नहीं करती है, तो उस सिग्नल के लिए डिफ़ॉल्ट हैंडलर का उपयोग किया जा रहा है। नीचे दी गई तालिका में पोसिक्स- संगत यूनिक्स सिस्टम के लिए कुछ डिफ़ॉल्ट क्रियाओं की सूची दी गई है, जैसे [[FreeBSD|फ्रीब्सड]], [[OpenBSD|ओपनबीएसडी]] और [[Linux|लिनक्स]]।


{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Signal !! data-sort-type="number"|Portable<br/>number !! Default action !! class="unsortable"|Description
! सिग्नल !! data-sort-type="number" |पोर्टेबल
संख्या
! डिफ़ॉल्ट क्रिया !! class="unsortable" |विवरण
|-
|-
| SIGABRT || style="text-align:right" | 6 || {{terminated|Terminate}} (core dump) || Process abort signal
| सिगाबर्ट || style="text-align:right" | 6 || {{terminated|Terminate}} (core dump) || प्रक्रिया निरस्त संकेत
|-
|-
| SIGALRM || style="text-align:right" | 14 || {{terminated|Terminate}} || Alarm clock
| सिगलरम || style="text-align:right" | 14 || {{terminated|Terminate}} || अलार्म घड़ी
|-
|-
| SIGBUS || {{n/a}} || {{terminated|Terminate}} (core dump) || Access to an undefined portion of a memory object
| सिगबस || {{n/a}} || {{terminated|Terminate}} (core dump) || मेमोरी ऑब्जेक्ट के अपरिभाषित भाग तक पहुंच
|-
|-
| SIGCHLD || {{n/a}} || style="text-align:center" | Ignore || Child process terminated, stopped, or continued
| सिगचल्ड || {{n/a}} || style="text-align:center" | उपेक्षा || बाल प्रक्रिया समाप्त हो गई, बंद हो गई, या जारी रही
|-
|-
| SIGCONT || {{n/a}} || style="text-align:center" | Continue || Continue executing, if stopped
| सिगकॉन्ट || {{n/a}} || style="text-align:center" | लगातार || निष्पादित करना जारी रखें, अगर रोका जाए
|-
|-
| SIGFPE || style="text-align:right" | 8 || {{terminated|Terminate}} (core dump) || Erroneous arithmetic operation
| एसआईजीएफपीई || style="text-align:right" | 8 || {{terminated|Terminate}} (core dump) || गलत अंकगणितीय संचालन
|-
|-
| SIGHUP || style="text-align:right" | 1 || {{terminated|Terminate}} || Hangup
| सिगहप || style="text-align:right" | 1 || {{terminated|Terminate}} || हैंगअप
|-
|-
| SIGILL || style="text-align:right" | 4 || {{terminated|Terminate}} (core dump) || Illegal instruction
| सिगिल || style="text-align:right" | 4 || {{terminated|Terminate}} (core dump) || अवैध अनुदेश
|-
|-
| SIGINT || style="text-align:right" | 2 || {{terminated|Terminate}} || Terminal interrupt signal
| सिगिनट || style="text-align:right" | 2 || {{terminated|Terminate}} || टर्मिनल अंतराल संकेत
|-
|-
| SIGKILL || style="text-align:right" | 9 || {{terminated|Terminate}} || Kill (cannot be caught or ignored)
| सिगकिल || style="text-align:right" | 9 || {{terminated|Terminate}} || किल (पकड़ा नहीं जा सकता या अनदेखा नहीं किया जा सकता है)
|-
|-
| SIGPIPE || style="text-align:right" | 13 || {{terminated|Terminate}} || Write on a pipe with no one to read it
| एसआईजीपीआईपीई || style="text-align:right" | 13 || {{terminated|Terminate}} || इसे पढ़ने के लिए कोई भी पाइप पर लिखें
|-
|-
| SIGPOLL || {{n/a}} || {{terminated|Terminate}} || Pollable event
| सिगपोल || {{n/a}} || {{terminated|Terminate}} || मतदान्य घटना
|-
|-
| SIGPROF || {{n/a}} || {{terminated|Terminate}} || Profiling timer expired
| सिगप्रोफ || {{n/a}} || {{terminated|Terminate}} || प्रोफाइलिंग टाइमर समाप्त हो गया
|-
|-
| SIGQUIT || style="text-align:right" | 3 || {{terminated|Terminate}} (core dump) || Terminal quit signal
| सिग्क्विट || style="text-align:right" | 3 || {{terminated|Terminate}} (core dump) || टर्मिनल छोड़ें संकेत
|-
|-
| SIGSEGV || style="text-align:right" | 11 || {{terminated|Terminate}} (core dump) || Invalid memory reference
| एसआईजीएसईजीवी || style="text-align:right" | 11 || {{terminated|Terminate}} (core dump) || अमान्य मेमोरी संदर्भ
|-
|-
| SIGSTOP || {{n/a}} || {{dropped|Stop}} || Stop executing (cannot be caught or ignored)
| सिगस्टॉप || {{n/a}} || {{dropped|Stop}} || निष्पादित करना बंद करो (पकड़ा नहीं जा सकता या अनदेखा नहीं किया जा सकता है)
|-
|-
| SIGSYS || {{n/a}} || {{terminated|Terminate}} (core dump) || Bad system call
| सिगसिस || {{n/a}} || {{terminated|Terminate}} (core dump) || खराब सिस्टम कॉल
|-
|-
| SIGTERM || style="text-align:right" | 15 || {{terminated|Terminate}} || Termination signal
| सिगटरम || style="text-align:right" | 15 || {{terminated|Terminate}} || समाप्ति संकेत
|-
|-
| SIGTRAP || style="text-align:right" | 5 || {{terminated|Terminate}} (core dump) || Trace/breakpoint trap
| सिगट्रैप || style="text-align:right" | 5 || {{terminated|Terminate}} (core dump) || ट्रेस/ब्रेकपॉइंट ट्रैप
|-
|-
| SIGTSTP || {{n/a}} || {{dropped|Stop}} || Terminal stop signal
| एसआईजीएसटीपी || {{n/a}} || {{dropped|Stop}} || टर्मिनल स्टॉप सिग्नल
|-
|-
| SIGTTIN || {{n/a}} || {{dropped|Stop}} || Background process attempting read
| सिगटिन || {{n/a}} || {{dropped|Stop}} || पृष्ठभूमि प्रक्रिया पढ़ने का प्रयास
|-
|-
| SIGTTOU || {{n/a}} || {{dropped|Stop}} || Background process attempting write
| सिगटू || {{n/a}} || {{dropped|Stop}} || पृष्ठभूमि प्रक्रिया लिखने का प्रयास
|-
|-
| SIGUSR1 || {{n/a}} || {{terminated|Terminate}} || User-defined signal 1
| सिगुसर1 || {{n/a}} || {{terminated|Terminate}} || उपयोगकर्ता-परिभाषित संकेत 1
|-
|-
| SIGUSR2 || {{n/a}} || {{terminated|Terminate}} || User-defined signal 2
| सिगुसर2 || {{n/a}} || {{terminated|Terminate}} || उपयोगकर्ता-परिभाषित संकेत 2
|-
|-
| SIGURG || {{n/a}} || style="text-align:center" | Ignore || [[Out-of-band data]] is available at a socket
| सिगर्ग || {{n/a}} || style="text-align:center" | उपेक्षा || [[Out-of-band data|आउट-ऑफ-बैंड डेटा]] एक सॉकेट में उपलब्ध है
|-
|-
| SIGVTALRM || {{N/A}} || {{terminated|Terminate}} || Virtual timer expired
| सिग्वाल्रम || {{N/A}} || {{terminated|Terminate}} || वर्चुअल टाइमर समाप्त हो गया
|-
|-
| SIGXCPU || {{n/a}} || {{terminated|Terminate}} (core dump) || CPU time limit exceeded
| सिग्क्ससीपीयू || {{n/a}} || {{terminated|Terminate}} (core dump) || सीपीयू समय सीमा पार हो गई
|-
|-
| SIGXFSZ || {{n/a}} || {{terminated|Terminate}} (core dump) || File size limit exceeded
| सिगएक्सएफएसजेड || {{n/a}} || {{terminated|Terminate}} (core dump) || फ़ाइल आकार सीमा पार हो गई
|-
|-
| SIGWINCH || {{n/a}} || style="text-align:center" | Ignore || Terminal window size changed
| सिग्विंच || {{n/a}} || style="text-align:center" | उपेक्षा || टर्मिनल विंडो का आकार बदल गया
|}
|}
; पोर्टेबल नंबर:
; पोर्टेबल नंबर:
: अधिकांश संकेतों के लिए संबंधित संकेत संख्या कार्यान्वयन-परिभाषित है। यह कॉलम पॉज़िक्स मानक में निर्दिष्ट संख्याओं को सूचीबद्ध करता है।<ref>{{cite web|title=IEEE Std 1003.1-2017 - kill|url=https://pubs.opengroup.org/onlinepubs/9699919799/utilities/kill.html|publisher=IEEE, Open Group|quote=The correspondence between integer values and the ''sig'' value used is shown in the following list. The effects of specifying any ''signal_number'' other than those listed below are undefined.}}</ref>
: अधिकांश सिग्नलों के लिए संबंधित सिग्नल संख्या कार्यान्वयन-परिभाषित है। यह स्तंभ पॉज़िक्स मानक में निर्दिष्ट संख्याओं को सूचीबद्ध करता है।<ref>{{cite web|title=IEEE Std 1003.1-2017 - kill|url=https://pubs.opengroup.org/onlinepubs/9699919799/utilities/kill.html|publisher=IEEE, Open Group|quote=The correspondence between integer values and the ''sig'' value used is shown in the following list. The effects of specifying any ''signal_number'' other than those listed below are undefined.}}</ref>
; क्रियाएँ समझाई गईं:
; क्रियाएँ समझाई गईं:
: 'समाप्त'{{snd}} प्रक्रिया की असामान्य समाप्ति। प्रक्रिया को _exit() के सभी परिणामों के साथ समाप्त कर दिया गया है सिवाय इसके कि प्रतीक्षा () और प्रतीक्षापिड () को उपलब्ध कराई गई स्थिति निर्दिष्ट संकेत द्वारा असामान्य समाप्ति का संकेत देती है।
: 'समाप्त'{{snd}} प्रक्रिया की असामान्य समाप्ति। प्रक्रिया को _exit() के सभी परिणामों के साथ समाप्त कर दिया गया है अतिरिक्त इसके कि प्रतीक्षा () और प्रतीक्षापिड () को उपलब्ध कराई गई स्थिति निर्दिष्ट सिग्नल द्वारा असामान्य समाप्ति का सिग्नल देती है।
: समाप्त (कोर डंप){{snd}} प्रक्रिया की असामान्य समाप्ति। इसके अतिरिक्त, कार्यान्वयन-परिभाषित असामान्य समाप्ति क्रियाएं, जैसे कोर फ़ाइल का निर्माण, हो सकता है।
: समाप्त (कोर डंप){{snd}} प्रक्रिया की असामान्य समाप्ति। इसके अतिरिक्त, कार्यान्वयन-परिभाषित असामान्य समाप्ति क्रियाएं, जैसे कोर फ़ाइल का निर्माण, हो सकता है।
: अनदेखा करना{{snd}} संकेत की उपेक्षा करें।
: अनदेखा करना{{snd}} सिग्नल की उपेक्षा करें।
: रुकना{{snd}} प्रक्रिया को रोकें (या निलंबित करें)।
: रुकना{{snd}} प्रक्रिया को रोकें (या निलंबित करें)।
: जारी रखना{{snd}} प्रक्रिया जारी रखें, अगर इसे रोका जाता है; अन्यथा, संकेत पर ध्यान न दें।
: जारी रखना{{snd}} प्रक्रिया जारी रखें, यदि इसे रोका जाता है; अन्यथा, सिग्नल पर ध्यान न दें।


== विविध संकेत ==
== विविध सिग्नल ==
निम्नलिखित संकेत POSIX विनिर्देशन में निर्दिष्ट नहीं हैं। हालाँकि, वे कभी-कभी विभिन्न प्रणालियों पर उपयोग किए जाते हैं।
निम्नलिखित सिग्नल पोसिक्स विनिर्देशन में निर्दिष्ट नहीं हैं। चूँकि, वे कभी-कभी विभिन्न प्रणालियों पर उपयोग किए जाते हैं।


; {{mono|{{vanchor|SIGEMT}}}}
; {{mono|{{vanchor|सिगेम्ट}}}}
: जब एमुलेटर ट्रैप होता है तो SIGEMT सिग्नल एक प्रक्रिया को भेजा जाता है।
: जब एमुलेटर ट्रैप होता है तो सिगेम्ट सिग्नल प्रक्रिया को भेजा जाता है।
; {{mono|{{vanchor|SIGINFO}}}}
; {{mono|{{vanchor|सिगइन्फो}}}}
: SIGINFO सिग्नल एक प्रक्रिया को भेजा जाता है जब नियंत्रक टर्मिनल से एक स्थिति (सूचना) अनुरोध प्राप्त होता है।
: सिगइन्फो सिग्नल प्रक्रिया को भेजा जाता है जब नियंत्रक टर्मिनल से स्थिति (सूचना) अनुरोध प्राप्त होता है।
; {{mono|{{vanchor|SIGPWR}}}}
; {{mono|{{vanchor|सिग्पर}}}}
: SIGPWR सिग्नल एक प्रक्रिया को भेजा जाता है जब सिस्टम [[बिजली की विफलता]] का अनुभव करता है।
: सिग्पर सिग्नल प्रक्रिया को भेजा जाता है जब सिस्टम [[बिजली की विफलता]] का अनुभव करता है।
; {{mono|{{vanchor|SIGLOST}}}}
; {{mono|{{vanchor|सिग्लोस्ट}}}}
: फ़ाइल लॉक खो जाने पर SIGLOST सिग्नल एक प्रक्रिया को भेजा जाता है।
: फ़ाइल लॉक खो जाने पर सिग्लोस्ट सिग्नल प्रक्रिया को भेजा जाता है।
; {{mono|{{vanchor|SIGSTKFLT}}}}
; {{mono|{{vanchor|सिगस्टकफ़्ल्ट}}}}
: SIGSTKFLT सिग्नल एक प्रक्रिया को भेजा जाता है जब सहसंसाधक स्टैक दोष का अनुभव करता है (यानी जब स्टैक खाली होता है तो पॉपिंग होता है या जब यह भर जाता है तो धक्का देता है)।<ref name="courier-mta.org">{{Cite web|url=https://manpages.courier-mta.org/htmlman7/signal.7.html|title=signal(7) — Linux manual pages|website=manpages.courier-mta.org|access-date=2018-11-22}}</ref> इसे परिभाषित किया गया है, लेकिन लिनक्स पर इसका उपयोग नहीं किया गया है, जहां एक [[x87]] कोप्रोसेसर स्टैक दोष इसके बजाय SIGFPE उत्पन्न करेगा।<ref>{{cite web|url=https://stackoverflow.com/questions/9332864/linux-3-0-x86-64-when-is-sigstkflt-raised#comment51557777_9333099|title=Linux 3.0 x86_64: When is SIGSTKFLT raised?|website=Stack Overflow}}</ref>
: सिगस्टकफ़्ल्ट सिग्नल प्रक्रिया को भेजा जाता है जब सहसंसाधक स्टैक दोष का अनुभव करता है (यानी जब स्टैक खाली होता है तो पॉपिंग होता है या जब यह भर जाता है तो धक्का देता है)।<ref name="courier-mta.org">{{Cite web|url=https://manpages.courier-mta.org/htmlman7/signal.7.html|title=signal(7) — Linux manual pages|website=manpages.courier-mta.org|access-date=2018-11-22}}</ref> इसे परिभाषित किया गया है, लेकिन लिनक्स पर इसका उपयोग नहीं किया गया है, जहां [[x87]] कोप्रक्रियार स्टैक दोष इसके अतिरिक्त एसआईजीएफपीई उत्पन्न करेगा।<ref>{{cite web|url=https://stackoverflow.com/questions/9332864/linux-3-0-x86-64-when-is-sigstkflt-raised#comment51557777_9333099|title=Linux 3.0 x86_64: When is SIGSTKFLT raised?|website=Stack Overflow}}</ref>
; {{mono|{{vanchor|SIGUNUSED}}}}
; {{mono|{{vanchor|सिगुन्ड}}}}
: SIGUNUSED सिग्नल एक प्रक्रिया को भेजा जाता है जब एक अप्रयुक्त सिस्टम कॉल नंबर के साथ एक सिस्टम कॉल किया जाता है। यह अधिकांश आर्किटेक्चर पर SIGSYS का पर्याय है।<ref name="courier-mta.org"/>; {{mono|{{vanchor|SIGCLD}}}}
: सिगुन्ड सिग्नल प्रक्रिया को भेजा जाता है जब अप्रयुक्त सिस्टम कॉल नंबर के साथ सिस्टम कॉल किया जाता है। यह अधिकांश आर्किटेक्चर पर सिगसिस का पर्याय है।<ref name="courier-mta.org"/>; {{mono|{{vanchor|सिग्लड}}}}
: SIGCLD सिग्नल SIGCHLD का पर्याय है।<ref name="courier-mta.org"/>
: सिग्लड सिग्नल सिगचल्ड का पर्याय है।<ref name="courier-mta.org"/>




Line 244: Line 246:
* {{cite book |title=Advanced Programming in the UNIX® Environment |last=Stevens |first=W. Richard |author-link=W. Richard Stevens |year=1992 |publisher=Addison Wesley |location=Reading, Massachusetts |isbn=0-201-56317-7 |url=https://archive.org/details/advancedprogramm00stev |ref=Ste92 |url-access=registration }}
* {{cite book |title=Advanced Programming in the UNIX® Environment |last=Stevens |first=W. Richard |author-link=W. Richard Stevens |year=1992 |publisher=Addison Wesley |location=Reading, Massachusetts |isbn=0-201-56317-7 |url=https://archive.org/details/advancedprogramm00stev |ref=Ste92 |url-access=registration }}
* {{cite web | publisher=[[The Open Group]] | title=The Open Group Base Specifications Issue 7, 2013 Edition | url=https://pubs.opengroup.org/onlinepubs/9699919799/ | access-date=19 June 2015}}
* {{cite web | publisher=[[The Open Group]] | title=The Open Group Base Specifications Issue 7, 2013 Edition | url=https://pubs.opengroup.org/onlinepubs/9699919799/ | access-date=19 June 2015}}
==बाहरी संबंध==
==बाहरी संबंध==
* [https://people.cs.pitt.edu/~alanjawi/cs449/code/shell/UnixSignals.htm Unix Signals Table, Ali Alanjawi, University of Pittsburgh]
* [https://people.cs.pitt.edu/~alanjawi/cs449/code/shell/UnixSignals.htm Unix Signals Table, Ali Alanjawi, University of Pittsburgh]
Line 251: Line 251:
* Introduction To Unix Signals Programming {{webarchive |url=https://web.archive.org/web/20130926005901/http://users.actcom.co.il/~choo/lupg/tutorials/signals/signals-programming.html |date=26 September 2013 |title=Introduction To Unix Signals Programming }}
* Introduction To Unix Signals Programming {{webarchive |url=https://web.archive.org/web/20130926005901/http://users.actcom.co.il/~choo/lupg/tutorials/signals/signals-programming.html |date=26 September 2013 |title=Introduction To Unix Signals Programming }}
* [https://www.linuxprogrammingblog.com/all-about-linux-signals Another Introduction to Unix Signals Programming] (blog post, 2009)
* [https://www.linuxprogrammingblog.com/all-about-linux-signals Another Introduction to Unix Signals Programming] (blog post, 2009)
* [http://www.enderunix.org/docs/signals.pdf UNIX and Reliable POSIX Signals] by Baris Simsek
* [http://www.enderunix.org/docs/signals.pdf यूनिक्स and Reliable पोसिक्स Signals] by Baris Simsek
* [https://www.openbsd.org/papers/opencon04/index.html Signal Handlers] by Henning Brauer
* [https://www.openbsd.org/papers/opencon04/index.html Signal Handlers] by Henning Brauer


{{Inter-process communication}}
[[Category:All articles with unsourced statements]]
[[Category: अंतःप्रक्रम संचार]] [[Category: बहाव को काबू करें]]  
[[Category:Articles with hatnote templates targeting a nonexistent page]]
 
[[Category:Articles with unsourced statements from May 2022]]
 
[[Category:Collapse templates]]
 
[[Category: Machine Translated Page]]
[[Category:Created On 17/02/2023]]
[[Category:Created On 17/02/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Webarchive template wayback links]]
[[Category:Wikipedia metatemplates]]
[[Category:अंतःप्रक्रम संचार]]
[[Category:बहाव को काबू करें]]

Latest revision as of 16:45, 2 November 2023

सिग्नल विशिष्ट व्यवहार जैसे छोड़ने या त्रुटि प्रबंधन को ट्रिगर करने के लिए चल रहे कंप्यूटर प्रोग्राम को भेजे गए मानकीकृत संदेश हैं। वे अंतःप्रक्रम संचार (आईपीसी) का एक सीमित रूप हैं जो सामान्यतः यूनिक्स, यूनिक्स-जैसे और अन्य पोसिक्स- संगत ऑपरेटिंग सिस्टम में उपयोग किए जाते हैं।

एक संकेत एक अतुल्यकालिक सूचना है जो किसी प्रक्रिया (कंप्यूटिंग) को या किसी विशिष्ट थ्रेड (कंप्यूटर विज्ञान) को उसी प्रक्रिया के अन्दर किसी घटना की सूचना देने के लिए भेजी जाती है। संकेतों के सामान्य उपयोग किसी प्रक्रिया को बाधित, निलंबित, समाप्त या समाप्त करना है। सिग्नल 1970 के बेल लैब्स यूनिक्स में उत्पन्न हुए और बाद में पोसिक्स मानक में निर्दिष्ट किया गया हैं।

जब सिग्नल भेजा जाता है, तो ऑपरेटिंग सिस्टम सिग्नल देने के लिए लक्ष्य प्रक्रिया के सामान्य नियंत्रण प्रवाह को बाधित करता है। किसी भी गैर-परमाणु निर्देश के समय निष्पादन को बाधित किया जा सकता है। यदि प्रक्रिया ने पहले सिग्नल हैंडलर पंजीकृत किया है, तो वह दिनचर्या निष्पादित की जाती है। अन्यथा, डिफ़ॉल्ट सिग्नल हैंडलर निष्पादित किया जाता है।

एंबेडेड प्रोग्राम अंतःप्रक्रम संचार के लिए उपयोगी सिग्नल पा सकते हैं, क्योंकि सिग्नल उनके एल्गोरिथम दक्षता के लिए उल्लेखनीय हैं।

सिग्नल बाधा डालना्स के समान हैं, अंतर यह है कि अवरोध्स सेंट्रल प्रक्रियािंग यूनिट द्वारा मध्यस्थ होते हैं और कर्नेल (ऑपरेटिंग सिस्टम) द्वारा नियंत्रित होते हैं जबकि सिग्नल कर्नेल द्वारा मध्यस्थ होते हैं (संभवतः सिस्टम कॉल के माध्यम से) और व्यक्तिगत प्रक्रिया (कंप्यूटिंग) द्वारा नियंत्रित होते हैं।[citation needed] कर्नेल रुकावट को उस प्रक्रिया के लिए सिग्नल के रूप में पारित कर सकता है जो इसे (सामान्य उदाहरण एसआईजीएसईजीवी, सिगबस, सिगिल और एसआईजीएफपीई हैं) उत्पन्न करता है।

इतिहास

संस्करण 1 यूनिक्स (1971) में अवरोध, क्विट और मशीन ट्रैप को पकड़ने के लिए अलग सिस्टम कॉल थे।

किल संस्करण 2 यूनिक्स (1972) में दिखाई दिया।

संस्करण 4 यूनिक्स (1973) ने सभी जालों को कॉल सिग्नल में संयोजित किया,

संस्करण 5 यूनिक्स (1974) मनमाने सिग्नल भेज सकता है।[1] संस्करण 7 यूनिक्स (1979) में प्रत्येक गिने हुए जाल को प्रतीकात्मक नाम मिला।

बेल लैब्स (मध्य 80 के दशक) से योजना 9 ने सिग्नलों को नोटों से बदल दिया, जो छोटे, मनमाना तार भेजने की अनुमति देते हैं।[2]


सिग्नल भेजना

यदि अनुमतियाँ अनुमति देती हैं, तो किल(2) सिस्टम कॉल एक निर्दिष्ट प्रक्रिया को एक निर्दिष्ट संकेत भेजता है। इसी प्रकार, किल (1) कमांड उपयोगकर्ता को प्रक्रियाओं को सिग्नल भेजने की अनुमति देता है। रेज़(3) लाइब्रेरी फ़ंक्शन वर्तमान प्रक्रिया को निर्दिष्ट सिग्नल भेजता है।

शून्य से विभाजन, विभाजन उल्लंघन (एसआईजीएसईजीवी), और फ़्लोटिंग पॉइंट अपवाद (एसआईजीएफपीई) द्वारा विभाजन जैसे अपवाद कोर निपात का कारण बनेगी और कार्यक्रम को समाप्त कर देगी।

कर्नेल घटनाओं की प्रक्रियाओं को सूचित करने के लिए सिग्नल उत्पन्न कर सकता है। उदाहरण के लिए, एसआईजीपीआईपीई उत्पन्न होगा जब प्रक्रिया पाइप को लिखती है जिसे पाठक द्वारा बंद कर दिया गया है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को समाप्त करने का कारण बनता है, जो पाइपलाइन (यूनिक्स) का निर्माण करते समय सुविधाजनक होता है।

चल रही प्रक्रिया के कंप्यूटर टर्मिनल पर कुछ कुंजी संयोजनों को टाइप करने से सिस्टम इसे कुछ सिग्नल भेजता है:[3]

  • Ctrl-C (पुराने यूनिक्स में, डेल) इंट सिग्नल (अवरोध, सिगिनट) भेजता है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को समाप्त करने का कारण बनता है।
  • Ctrl-Z टीएसटीपी सिग्नल (टर्मिनल स्टॉप, एसआईजीएसटीपी) भेजता है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को निष्पादन को निलंबित करने का कारण बनता है।[4]
  • Ctrl-\ क्विट सिग्नल (सिग्क्विट) भेजता है; डिफ़ॉल्ट रूप से, यह प्रक्रिया को समाप्त करने और कोर को डंप करने का कारण बनता है।
  • Ctrl-T (सभी यूनिक्स पर समर्थित नहीं) इन्फो सिग्नल (सिगइन्फो) भेजता है; डिफ़ॉल्ट रूप से, और यदि कमांड द्वारा समर्थित है, तो यह ऑपरेटिंग सिस्टम को रनिंग कमांड के बारे में जानकारी दिखाने का कारण बनता है।[5]

आधुनिक ऑपरेटिंग सिस्टम के साथ इन डिफ़ॉल्ट कुंजी संयोजनों को एसटीटीवाई कमांड इसके साथ बदला जा सकता है।

सिग्नलों को संभालना

सिग्नल हैंडलर्स को सिग्नल (2) या सिग्नल(2) या सिग्नेक्शन(2)सिस्टम कॉल के साथ स्थापित किया जा सकता है। यदि किसी विशेष सिग्नल के लिए सिग्नल हैंडलर स्थापित नहीं है, तो डिफ़ॉल्ट हैंडलर का उपयोग किया जाता है। अन्यथा सिग्नल इंटरसेप्ट हो जाता है और सिग्नल हैंडलर प्रायुक्त हो जाता है। प्रक्रिया हैंडलर बनाए बिना दो डिफ़ॉल्ट व्यवहार भी निर्दिष्ट कर सकती है: सिग्नल (सिग_इग्न) को अनदेखा करें और डिफ़ॉल्ट सिग्नल हैंडलर (सिग_डीएफएल) का उपयोग करें। ऐसे दो सिग्नल हैं जिन्हें इंटरसेप्ट नहीं किया जा सकता है और सिगकिल और सिगस्टॉप को हैंडल किया जा सकता है।

जोखिम

सिग्नल हैंडलिंग दौड़ की स्थिति के लिए असुरक्षित है। सिग्नल अतुल्यकालिक होने के कारण, सिग्नल हैंडलिंग रूटीन के निष्पादन के समय अन्य सिग्नल (समान प्रकार का भी) प्रक्रिया को दिया जा सकता है। सिग्प्रोकमास्क(2) कॉल का उपयोग सिग्नलों की डिलीवरी को बंद और खुला करने के लिए किया जा सकता है। ब्लॉक किए गए सिग्नल अनब्लॉक होने तक प्रक्रिया को डिलीवर नहीं किए जाते हैं। सिग्नल जिन्हें अनदेखा नहीं किया जा सकता है (सिगकिल और सिगस्टॉप) को अवरुद्ध नहीं किया जा सकता है।

सिग्नल किसी सिस्टम कॉल की प्रगति में रुकावट का कारण बन सकते हैं, इसे पीसीएलएसरिंग गैर-पारदर्शी पुनरारंभ को प्रबंधित करने के लिए एप्लिकेशन पर छोड़ देते हैं।

सिग्नल हैंडलर को इस प्रकार से लिखा जाना चाहिए जिससे कोई अवांछित दुष्प्रभाव न हो, उदाहरण के लिये इरनो परिवर्तन, सिग्नल मास्क परिवर्तन, सिग्नल स्वभाव परिवर्तन, और अन्य वैश्विक प्रक्रिया (कंप्यूटिंग) विशेषता परिवर्तन गैर-रीएन्ट्रेंट (उपनेमका) कार्यों का उपयोग, उदाहरण के लिए, मॉलोक या प्रिंटफ, अंदर के सिग्नल हैंडलर भी असुरक्षित हैं। विशेष रूप से, पॉज़िक्स विनिर्देश और लिनक्स मैन पेज सिग्नल(7) आवश्यकता है कि सिग्नल फ़ंक्शन से प्रत्यक्ष या अप्रत्यक्ष रूप से बुलाए गए सभी सिस्टम फ़ंक्शन एसिंक्स-सिग्नल सुरक्षित हैं।[6][7] सिग्नल-सेफ्टी(7) मैन पेज ऐसे एसिनसी-सिग्नल सेफ सिस्टम फ़ंक्शंस (व्यावहारिक रूप से सिस्टम कॉल) की सूची देता है, अन्यथा यह अपरिभाषित व्यवहार है।[8] यह सुझाव दिया जाता है कि बस कुछ volatile sig_atomic_t सिग्नल हैंडलर में चर, और इसे कहीं और परीक्षण करने के लिए सेट करें।[9]

इसके अतिरिक्त सिग्नल हैंडलर सिग्नल को सूचि (अमूर्त डेटा प्रकार) में डाल सकते हैं और तुरंत वापस लौट सकते हैं। मुख्य धागा तब तक निर्बाध रूप से जारी रहेगा जब तक कि सूचि से सिग्नल नहीं लिए जाते, जैसे कि घटना पाश में। यहां निर्बाध का अर्थ है कि अवरुद्ध करना (कंप्यूटिंग) के संचालन समय से पहले वापस आ सकते हैं और पीसीएलएसआरिंग, जैसा कि ऊपर बताया गया है। सिग्नल को सूचि से मुख्य धागे पर संसाधित किया जाना चाहिए, न कि थ्रेड पूल पैटर्न द्वारा, क्योंकि यह अतुल्यकालिकता की समस्या को फिर से प्रस्तुत करता है। चूँकि, केवल sig_atomic_t एसिनसी-सिग्नल सुरक्षित तरीके से सूचि का प्रबंधन संभव नहीं है, क्योंकि ऐसे वेरिएबल्स के लिए केवल ही रीड और राईट एटॉमिक होने की गारंटी है, इंक्रीमेंट्स या (fetch-and)-डिक्रीमेंट्स नहीं, जैसा कि लाइन के लिए आवश्यक होगा। इस प्रकार, प्रभावी रूप से, प्रति हैंडलर केवल सिग्नल को संसाधित होने तक sig_atomic_t के साथ सुरक्षित रूप से सूचिबद्ध किया जा सकता है।

हार्डवेयर अपवादों के साथ संबंध

प्रक्रिया (कंप्यूटिंग) के निष्पादन के परिणामस्वरूप हार्डवेयर अपवाद प्रबंधन की उत्पत्ति हो सकती है, उदाहरण के लिए, यदि प्रक्रिया शून्य से विभाजित करने का प्रयास करती है या पृष्ठ दोष उत्पन्न करती है।

यूनिक्स-जैसे ऑपरेटिंग सिस्टम में, यह घटना कर्नेल (कंप्यूटर साइंस) एक्सेप्शन हैंडलिंग को निष्पादित करने के लिए स्वचालित रूप से प्रक्रियार कॉन्टेक्स्ट (कंप्यूटिंग) को बदल देती है। कुछ अपवादों के स्थितियों में, जैसे कि पृष्ठ दोष, कर्नेल के पास घटना को पूरी प्रकार से संभालने और प्रक्रिया के निष्पादन को फिर से शुरू करने के लिए पर्याप्त जानकारी है।

अन्य अपवाद, चूंकि, कर्नेल बुद्धिमानी से प्रक्रिया नहीं कर सकता है और इसके अतिरिक्त अपवाद हैंडलिंग ऑपरेशन को फॉल्टिंग प्रक्रिया के लिए स्थगित करना चाहिए। यह डिफरल सिग्नल मैकेनिज्म के माध्यम से प्राप्त किया जाता है, जिसमें कर्नेल प्रक्रिया को वर्तमान अपवाद के अनुरूप सिग्नल भेजता है। उदाहरण के लिए, यदि किसी प्रक्रिया ने x86 सीपीयू पर शून्य से पूर्णांक विभाजित करने का प्रयास किया है, तो विभाजन त्रुटि अपवाद उत्पन्न होगा और कर्नेल को प्रक्रिया में एसआईजीएफपीई सिग्नल भेजने का कारण बनेगा।

इसी प्रकार, यदि प्रक्रिया अपने आभासी पता स्थान के बाहर मेमोरी एड्रेस तक पहुंचने का प्रयास करती है, तो कर्नेल इस उल्लंघन की प्रक्रिया को एसआईजीएसईजीवी (सेगफॉल्ट सिग्नल) के माध्यम से सूचित करेगा। सिग्नल नामों और अपवादों के बीच त्रुटिहीन मैपिंग स्पष्ट रूप से सीपीयू पर निर्भर है, क्योंकि आर्किटेक्चर के बीच अपवाद प्रकार भिन्न होते हैं।

पॉज़िक्स सिग्नल

नीचे दी गई सूची एकल यूनिक्स विशिष्टता में निर्दिष्ट सिग्नलों का दस्तावेजीकरण करती है। सभी सिग्नलों को मैक्रो स्थिरांक के रूप में परिभाषित किया गया है <signal.h> हेडर फाइल। स्थूल स्थिरांक के नाम में SIG उपसर्ग (भाषाविज्ञान) होता है जिसके बाद सिग्नल के लिए स्मरक नाम होता है।

सिगाबर्ट और सिगियट
सिग्नल गर्भपात, सिग्नल इनपुट/आउटपुट ट्रैप
सिगाबर्ट और सिगियट सिग्नल को एक प्रक्रिया को भेजा जाता है जिससे यह पता चल सके कि इसे समाप्त करने के लिए अबो्र्ट (कंप्यूटिंग) कराया जाए। सिग्नल सामान्यतः प्रक्रिया द्वारा ही शुरू किया जाता है जब यह सी सी मानक पुस्तकालय के abort() फ़ंक्शन को कॉल करता है, लेकिन इसे किसी भी अन्य सिग्नल की तरह बाहर से प्रक्रिया में भेजा जा सकता है।
सिगलरम, सिग्वाल्रम और सिगप्रोफ
सिग्नल अलार्म, सिग्नल वीटी अलार्म, सिग्नल प्रोफाइलिंग टाइमर अलार्म
सिगलरम, सिग्वाल्रम और सिगप्रोफ सिग्नल प्रक्रिया को भेजे जाते हैं जब कॉल में निर्दिष्ट समय सीमा पूर्ववर्ती 'अलार्म' सेटिंग फ़ंक्शन (जैसे setitimer) बीत जाता है। सिगलरम तब भेजा जाता है जब वास्तविक या घड़ी का समय समाप्त हो जाता है। सिग्वाल्रम तब भेजा जाता है जब प्रक्रिया द्वारा उपयोग किया जाने वाला सीपीयू समय समाप्त हो जाता है। सिगप्रोफ तब भेजा जाता है जब प्रक्रिया द्वारा उपयोग किया जाने वाला सीपीयू समय और प्रक्रिया की ओर से सिस्टम द्वारा उपयोग किया जाता है, अर्थात जब प्रोफाइलिंग टाइमर समाप्त हो जाता है।
सिगबस
सिग्नल बस
सिगबस सिग्नल प्रक्रिया को भेजा जाता है जब यह 'बस त्रुटि' का कारण बनता है। सिग्नल भेजे जाने की ओर ले जाने वाली स्थितियाँ हैं, उदाहरण के लिए, गलत मेमोरी एक्सेस अलाइनमेंट या गैर-उपस्थित भौतिक पता।
सिगचल्ड
सिग्नल चाइल्ड
सिगचल्ड सिग्नल प्रक्रिया को भेजा जाता है जब 'बाल प्रक्रिया' बाहर निकलता है (सिस्टम कॉल), बाधित होता है, या बाधित होने के बाद फिर से शुरू होता है। सिग्नल का एक सामान्य उपयोग यह है कि ऑपरेटिंग सिस्टम को wait सिस्टम कॉल के लिए स्पष्ट कॉल के बिना समाप्ति के बाद एक बच्चे की प्रक्रिया द्वारा उपयोग किए जाने वाले संसाधनों को साफ करने के लिए ऑपरेटिंग सिस्टम को निर्देश देना है।
सिगकॉन्ट
सिगनल जारी
सिगकॉन्ट सिग्नल ऑपरेटिंग सिस्टम को सिगस्टॉप या एसआईजीएसटीपी सिग्नल द्वारा पहले रोकी गई प्रक्रिया को 'जारी रखने' (पुनरारंभ) करने का निर्देश देता है। इस सिग्नल का महत्वपूर्ण उपयोग यूनिक्स खोल में नौकरी नियंत्रण (यूनिक्स) में है।
सिग्फ्पे
सिग्नल फ़्लोटिंग-पॉइंट त्रुटि
एसआईजीएफपीई सिग्नल प्रक्रिया को भेजा जाता है जब फ्लोटिंग पॉइंट या पूर्णांक अंकगणितीय हार्डवेयर में असाधारण (लेकिन जरूरी नहीं कि गलत) स्थिति का पता लगाया गया हो। इसमें शून्य से विभाजन, फ्लोटिंग पॉइंट अंडरफ़्लो या ओवरफ़्लो, पूर्णांक ओवरफ़्लो, अमान्य ऑपरेशन या अचूक संगणना सम्मिलित हो सकती है। हार्डवेयर के आधार पर व्यवहार भिन्न हो सकता है।
सिगहप
सिग्नल हैंगअप
किसी प्रक्रिया को सिगहप सिग्नल तब भेजा जाता है जब उसका कंट्रोलिंग टर्मिनल बंद होता है। यह मूल रूप से RS-232 ड्रॉप ('हैंगअप') की प्रक्रिया को सूचित करने के लिए डिज़ाइन किया गया था। आधुनिक प्रणालियों में, इस सिग्नल का सामान्यतः अर्थ होता है कि नियंत्रक टर्मिनल एमुलेटर बंद कर दिया गया है।[10] कई डेमॉन (सॉफ़्टवेयर) (जिनके पास कोई नियंत्रक टर्मिनल नहीं है) इस सिग्नल की प्राप्ति की व्याख्या उनकी कॉन्फ़िगरेशन फ़ाइलों को फिर से लोड करने और बाहर निकलने के अतिरिक्त उनके लॉगफ़ाइल्स को फ़्लश/पुनः खोलने के अनुरोध के रूप में करते हैं।[11] एक नोहअप कमांड है जो सिग्नल को अनदेखा करने के लिए कमांड बनाती है।
सिगिल
सिग्नल अवैध
सिगिल सिग्नल प्रक्रिया को भेजा जाता है जब यह 'अवैध', विकृत, अज्ञात, या विशेषाधिकार प्राप्त निर्देश (कंप्यूटर विज्ञान) को निष्पादित करने का प्रयास करता है।
सिगिंट
सिग्नल व्यवधान
जब कोई उपयोगकर्ता प्रक्रिया को 'बाधित' करना चाहता है तो सिगिनट सिग्नल उसके नियंत्रण टर्मिनल द्वारा प्रक्रिया को भेजा जाता है। यह सामान्यतः Ctrl+C दबाकर शुरू किया जाता है, लेकिन कुछ सिस्टम पर, डिलीट कुंजी कैरेक्टर या ब्रेक कुंजी कुंजी का उपयोग किया जा सकता है।[12]
सिग्किल्ल
सिग्नल मारो
सिगकिल सिग्नल प्रक्रिया को भेजा जाता है जिससे वह तुरंत समाप्त हो जाए ('किल')। सिगटरम और सिगिनट के विपरीत, इस सिग्नल को पकड़ा या अनदेखा नहीं किया जा सकता है, और प्राप्त करने वाली प्रक्रिया इस सिग्नल को प्राप्त करने पर कोई सफाई नहीं कर सकती है। निम्नलिखित अपवाद प्रायुक्त होते हैं:
  • ज़ोंबी प्रक्रियाओं को नहीं मारा जा सकता है क्योंकि वे पहले से ही मर चुके हैं और उनकी मूल प्रक्रियाओं का इंतजार कर रहे हैं।
  • जो प्रक्रियाएँ अवरुद्ध अवस्था में हैं, वे तब तक नहीं मरेंगी जब तक कि वे फिर से जाग न जाएँ।
  • इनिट प्रक्रिया विशेष है: इसे ऐसे सिग्नल नहीं मिलते हैं कि यह संभालना नहीं चाहता है, और इस प्रकार यह सिगकिल को अनदेखा कर सकता है।[13] इस नियम का अपवाद है जबकि लिनक्स पर इनिट पॉट्रेसेड है।[14][15]
  • निर्बाध नींद प्रक्रिया सिगकिल भेजे जाने पर भी समाप्त (और इसके संसाधनों को मुक्त) नहीं कर सकती है। यह उन कुछ स्थितियों में से है जिसमें अस्थायी सॉफ़्टवेयर समस्या का समाधान करने के लिए यूनिक्स सिस्टम को रीबूट करना पड़ सकता है।
सिगकिल का उपयोग अंतिम उपाय के रूप में किया जाता है जब अधिकांश सिस्टम शटडाउन (कंप्यूटिंग) प्रक्रियाओं में प्रक्रियाओं को समाप्त करते हैं यदि यह स्वेच्छा से सिगटरम के उत्तर में बाहर नहीं निकलता है। कंप्यूटर शटडाउन प्रक्रिया को गति देने के लिए, मैक ओएस X 10.6, या ​​मैक ओएस एक्स v10.6, सिगकिल को उन अनुप्रयोगों को भेजेगा, जिन्होंने स्वयं को साफ चिह्नित किया है, जिसके परिणामस्वरूप तेजी से शटडाउन समय, संभवतः, कोई बुरा प्रभाव नहीं है।[16] कमांड killall -9 में एक समान है, जबकि खतरनाक प्रभाव, जब निष्पादित किया जाता है। लिनक्स में; यह कार्यक्रमों को अनसुना डेटा को बचाने नहीं देता है। इसके पास अन्य विकल्प हैं, और कोई भी नहीं, सुरक्षित सिगर्म सिग्नल का उपयोग करता है।
सिग्पिपे
सिग्नल पाइप
एसआईजीपीआईपीई सिग्नल प्रक्रिया को भेजा जाता है जब यह पाइपलाइन (यूनिक्स) को दूसरे छोर से जुड़ी प्रक्रिया के बिना लिखने का प्रयास करता है।
सिग्पोल्ल
सिग्नल पोल
स्पष्ट रूप से देखे गए फ़ाइल डिस्क्रिप्टर पर कोई घटना होने पर सिगपोल सिग्नल भेजा जाता है।[17] इसका प्रभावी रूप से उपयोग अतुल्यकालिक I/O अनुरोध करने की ओर जाता है क्योंकि कर्नेल कॉल करने वाले के स्थान पर डिस्क्रिप्टर को पोल करेगा। यह सक्रिय मतदान (कंप्यूटर विज्ञान) का विकल्प प्रदान करता है।
सिगर्टमिन को सिगर्टमैक्स
सिग्नल रीयल-टाइम न्यूनतम, सिग्नल रीयल-टाइम अधिकतम
सिगर्टमिन से सिगर्टमैक्स सिग्नल का उपयोग उपयोगकर्ता-परिभाषित उद्देश्यों के लिए किया जाना है। वे 'वास्तविक समय' सिग्नल हैं।
सिग्क्विट
सिगनल बंद
सिग्क्विट सिग्नल को उसके नियंत्रण टर्मिनल द्वारा प्रक्रिया में भेजा जाता है जब उपयोगकर्ता अनुरोध करता है कि प्रक्रिया 'छोड़' और कोर डंप करें।
सिगसेग
सिग्नल विभाजन उल्लंघन
एसआईजीएसईजीवी सिग्नल प्रक्रिया को भेजा जाता है जब यह अमान्य वर्चुअल मेमोरी संदर्भ, या विखंडन दोष करता है, यानी जब यह 'सेगमेंटेशन उल्लंघन' करता है।[18]
सिगस्टॉप
सिग्नल स्टॉप
सिगस्टॉप सिग्नल ऑपरेटिंग सिस्टम को बाद में फिर से शुरू करने के लिए प्रक्रिया को 'स्टॉप' करने का निर्देश देता है।
सिगसिस
सिग्नल सिस्टम कॉल
सिगसिस सिग्नल प्रक्रिया को भेजा जाता है जब यह सिस्टम कॉल के लिए खराब तर्क पास करता है। व्यवहार में, इस प्रकार का सिग्नल संभवतः ही कभी सामने आता है क्योंकि अनुप्रयोग उनके लिए कॉल करने के लिए पुस्तकालयों (जैसे सी मानक पुस्तकालय) पर विश्वास करते हैं। सिगसिस उन अनुप्रयोगों द्वारा प्राप्त किया जा सकता है जो उन्हें प्रतिबंधित करने के लिए कॉन्फ़िगर किए गए लिनक्स सेककॉम्प सुरक्षा नियमों का उल्लंघन करते हैं। सिगसिस का उपयोग विदेशी सिस्टम कॉल का अनुकरण करने के लिए भी किया जा सकता है, उदा। लिनक्स पर विंडोज सिस्टम कॉल का अनुकरण करें।[19]
सिगटरम
सिग्नल समाप्त
सिगटरम सिग्नल को इसकी 'समाप्ति' का अनुरोध करने के लिए प्रक्रिया में भेजा जाता है। सिगकिल सिग्नल के विपरीत, इसे प्रक्रिया द्वारा पकड़ा और व्याख्या या अनदेखा किया जा सकता है। यह प्रक्रिया को संसाधनों को जारी करने और उपयुक्त होने पर स्थिति को बचाने के लिए अच्छा समापन करने की अनुमति देता है। सिगिनट लगभग सिगटरम के समान है।
सिगस्टटीपी
सिग्नल टर्मिनल स्टॉप
एसआईजीएसटीपी सिग्नल को 'स्टॉप' ('t'erminal 'st'o'p') के लिए अनुरोध करने के लिए 'टर्मिनल' को नियंत्रित करने के लिए प्रक्रिया को भेजा जाता है। यह सामान्यतः उपयोगकर्ता द्वारा Ctrl+Z दबाकर शुरू किया जाता है. सिगस्टॉप के विपरीत, प्रक्रिया सिग्नल हैंडलर को सिग्नल के लिए पंजीकृत कर सकती है या सिग्नल को अनदेखा कर सकती है।
सिगटिन और सिगटू
सिगटिन और सिगटू सिग्नल प्रक्रिया को तब भेजे जाते हैं जब वह पृष्ठभूमि प्रक्रिया के समय टेलेटाइपराइटर से क्रमशः पढ़ने या लिखने का प्रयास करती है। सामान्यतः, ये सिग्नल केवल जॉब कंट्रोल (यूनिक्स) के अनुसार प्रक्रियाओं द्वारा प्राप्त होते हैं; डेमन (कंप्यूटर सॉफ्टवेयर) में नियंत्रक टर्मिनल नहीं होते हैं और इसलिए, इन सिग्नलों को कभी प्राप्त नहीं करना चाहिए।
सिगट्रैप
सिग्नल ट्रैप
सिगट्रैप सिग्नल प्रक्रिया को भेजा जाता है जब अपवाद (या 'ट्रैप') होता है: शर्त जिसके बारे में डिबगर ने सूचित करने का अनुरोध किया है – उदाहरण के लिए, जब विशेष उपनेमका निष्पादित किया जाता है, या जब विशेष चर (प्रोग्रामिंग) मान बदलता है।
सिगट्रैप
तत्काल सिग्नल
सिगर्ग सिग्नल प्रक्रिया को भेजा जाता है जब बर्कले सॉकेट में पढ़ने के लिए 'अत्यावश्यक' या आउट-ऑफ-बैंड डेटा उपलब्ध होता है।
सिगुसर1 और सिगुसर2
सिग्नल यूजर 1, सिग्नल यूजर 2
सिगुसर1 और सिगुसर2 सिग्नल 'उपयोगकर्ता-परिभाषित स्थितियों' को इंगित करने के लिए प्रक्रिया में भेजे जाते हैं।
सिग्क्ससीपीयू
सिग्नल सीपीयू से अधिक हो गया
सिग्क्ससीपीयू सिग्नल प्रक्रिया को भेजा जाता है जब उसने 'सीपीयू' का उपयोग उस अवधि के लिए किया है जो निश्चित पूर्व निर्धारित उपयोगकर्ता-सेटटेबल मान से 'अधिक' है।[20] सिग्क्ससीपीयू सिग्नल का आगमन प्राप्त करने की प्रक्रिया को किसी भी मध्यवर्ती परिणाम को जल्दी से बचाने और सिगकिल सिग्नल का उपयोग करके ऑपरेटिंग सिस्टम द्वारा समाप्त किए जाने से पहले इनायत से बाहर निकलने का मौका प्रदान करता है।
सिगएक्सएफएसजेड
अतिरिक्त फ़ाइल आकार का सिग्नल दें
सिगएक्सएफएसजेड सिग्नल प्रक्रिया को भेजा जाता है जब यह 'फ़ाइल' बढ़ती है जो अधिकतम अनुमत 'आकार' से 'अधिक' होती है।
सिग्विंच
सिग्नल विंडो परिवर्तन
सिग्विंच सिग्नल प्रक्रिया को भेजा जाता है जब इसका नियंत्रक टर्मिनल अपना आकार ('wind'dow' ch'ange) बदलता है।[21]


डिफ़ॉल्ट कार्रवाई

प्रक्रिया सी सिग्नल हैंडलिंग को परिभाषित कर सकती है। यदि कोई प्रक्रिया सिग्नल के व्यवहार को परिभाषित नहीं करती है, तो उस सिग्नल के लिए डिफ़ॉल्ट हैंडलर का उपयोग किया जा रहा है। नीचे दी गई तालिका में पोसिक्स- संगत यूनिक्स सिस्टम के लिए कुछ डिफ़ॉल्ट क्रियाओं की सूची दी गई है, जैसे फ्रीब्सड, ओपनबीएसडी और लिनक्स

सिग्नल पोर्टेबल

संख्या

डिफ़ॉल्ट क्रिया विवरण
सिगाबर्ट 6 Terminate (core dump) प्रक्रिया निरस्त संकेत
सिगलरम 14 Terminate अलार्म घड़ी
सिगबस Terminate (core dump) मेमोरी ऑब्जेक्ट के अपरिभाषित भाग तक पहुंच
सिगचल्ड उपेक्षा बाल प्रक्रिया समाप्त हो गई, बंद हो गई, या जारी रही
सिगकॉन्ट लगातार निष्पादित करना जारी रखें, अगर रोका जाए
एसआईजीएफपीई 8 Terminate (core dump) गलत अंकगणितीय संचालन
सिगहप 1 Terminate हैंगअप
सिगिल 4 Terminate (core dump) अवैध अनुदेश
सिगिनट 2 Terminate टर्मिनल अंतराल संकेत
सिगकिल 9 Terminate किल (पकड़ा नहीं जा सकता या अनदेखा नहीं किया जा सकता है)
एसआईजीपीआईपीई 13 Terminate इसे पढ़ने के लिए कोई भी पाइप पर लिखें
सिगपोल Terminate मतदान्य घटना
सिगप्रोफ Terminate प्रोफाइलिंग टाइमर समाप्त हो गया
सिग्क्विट 3 Terminate (core dump) टर्मिनल छोड़ें संकेत
एसआईजीएसईजीवी 11 Terminate (core dump) अमान्य मेमोरी संदर्भ
सिगस्टॉप Stop निष्पादित करना बंद करो (पकड़ा नहीं जा सकता या अनदेखा नहीं किया जा सकता है)
सिगसिस Terminate (core dump) खराब सिस्टम कॉल
सिगटरम 15 Terminate समाप्ति संकेत
सिगट्रैप 5 Terminate (core dump) ट्रेस/ब्रेकपॉइंट ट्रैप
एसआईजीएसटीपी Stop टर्मिनल स्टॉप सिग्नल
सिगटिन Stop पृष्ठभूमि प्रक्रिया पढ़ने का प्रयास
सिगटू Stop पृष्ठभूमि प्रक्रिया लिखने का प्रयास
सिगुसर1 Terminate उपयोगकर्ता-परिभाषित संकेत 1
सिगुसर2 Terminate उपयोगकर्ता-परिभाषित संकेत 2
सिगर्ग उपेक्षा आउट-ऑफ-बैंड डेटा एक सॉकेट में उपलब्ध है
सिग्वाल्रम Terminate वर्चुअल टाइमर समाप्त हो गया
सिग्क्ससीपीयू Terminate (core dump) सीपीयू समय सीमा पार हो गई
सिगएक्सएफएसजेड Terminate (core dump) फ़ाइल आकार सीमा पार हो गई
सिग्विंच उपेक्षा टर्मिनल विंडो का आकार बदल गया
पोर्टेबल नंबर
अधिकांश सिग्नलों के लिए संबंधित सिग्नल संख्या कार्यान्वयन-परिभाषित है। यह स्तंभ पॉज़िक्स मानक में निर्दिष्ट संख्याओं को सूचीबद्ध करता है।[22]
क्रियाएँ समझाई गईं
'समाप्त' – प्रक्रिया की असामान्य समाप्ति। प्रक्रिया को _exit() के सभी परिणामों के साथ समाप्त कर दिया गया है अतिरिक्त इसके कि प्रतीक्षा () और प्रतीक्षापिड () को उपलब्ध कराई गई स्थिति निर्दिष्ट सिग्नल द्वारा असामान्य समाप्ति का सिग्नल देती है।
समाप्त (कोर डंप) – प्रक्रिया की असामान्य समाप्ति। इसके अतिरिक्त, कार्यान्वयन-परिभाषित असामान्य समाप्ति क्रियाएं, जैसे कोर फ़ाइल का निर्माण, हो सकता है।
अनदेखा करना – सिग्नल की उपेक्षा करें।
रुकना – प्रक्रिया को रोकें (या निलंबित करें)।
जारी रखना – प्रक्रिया जारी रखें, यदि इसे रोका जाता है; अन्यथा, सिग्नल पर ध्यान न दें।

विविध सिग्नल

निम्नलिखित सिग्नल पोसिक्स विनिर्देशन में निर्दिष्ट नहीं हैं। चूँकि, वे कभी-कभी विभिन्न प्रणालियों पर उपयोग किए जाते हैं।

सिगेम्ट
जब एमुलेटर ट्रैप होता है तो सिगेम्ट सिग्नल प्रक्रिया को भेजा जाता है।
सिगइन्फो
सिगइन्फो सिग्नल प्रक्रिया को भेजा जाता है जब नियंत्रक टर्मिनल से स्थिति (सूचना) अनुरोध प्राप्त होता है।
सिग्पर
सिग्पर सिग्नल प्रक्रिया को भेजा जाता है जब सिस्टम बिजली की विफलता का अनुभव करता है।
सिग्लोस्ट
फ़ाइल लॉक खो जाने पर सिग्लोस्ट सिग्नल प्रक्रिया को भेजा जाता है।
सिगस्टकफ़्ल्ट
सिगस्टकफ़्ल्ट सिग्नल प्रक्रिया को भेजा जाता है जब सहसंसाधक स्टैक दोष का अनुभव करता है (यानी जब स्टैक खाली होता है तो पॉपिंग होता है या जब यह भर जाता है तो धक्का देता है)।[23] इसे परिभाषित किया गया है, लेकिन लिनक्स पर इसका उपयोग नहीं किया गया है, जहां x87 कोप्रक्रियार स्टैक दोष इसके अतिरिक्त एसआईजीएफपीई उत्पन्न करेगा।[24]
सिगुन्ड
सिगुन्ड सिग्नल प्रक्रिया को भेजा जाता है जब अप्रयुक्त सिस्टम कॉल नंबर के साथ सिस्टम कॉल किया जाता है। यह अधिकांश आर्किटेक्चर पर सिगसिस का पर्याय है।[23]; सिग्लड
सिग्लड सिग्नल सिगचल्ड का पर्याय है।[23]


यह भी देखें

  • सी सिग्नल हैंडलिंग

संदर्भ

  1. McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139.
  2. Gagliardi, Pietro. "C Programming in Plan 9 from Bell Labs". doc.cat-v.org. Retrieved 22 January 2022.
  3. "Termination Signals". The GNU C Library).
  4. "Job Control Signals". The GNU C Library.
  5. "Miscellaneous Signals". The GNU C Library.
  6. "The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition: System Interfaces Chapter 2". pubs.opengroup.org. Retrieved 2020-12-20.
  7. "signal(7) - Linux manual page". man7.org. Retrieved 2020-12-20.
  8. "signal-safety(7) - Linux manual page". man7.org. Retrieved 2020-12-20.
  9. "The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition: <signal.h>". pubs.opengroup.org. Retrieved 2020-12-20.
  10. Michael Kerrisk (25 July 2009). "signal(7)". Linux Programmer's Manual (version 3.22). The Linux Kernel Archives. Retrieved 23 September 2009.
  11. "perlipc(1)". Perl Programmers Reference Guide, version 5.18. perldoc.perl.org - Official documentation for the Perl programming language. Retrieved 21 September 2013.
  12. "Proper handling of SIGINT and SIGQUIT". Retrieved 6 October 2012.
  13. https://manpages.ubuntu.com/manpages/zesty/man2/kill.2.html section NOTES
  14. "SIGKILL init process (PID 1)". Stack Overflow.
  15. "Can root kill init process?". Unix & Linux Stack Exchange.
  16. "Mac Dev Center: What's New in Mac OS X: Mac OS X v10.6". 2009-08-28. Retrieved 18 November 2017.
  17. "ioctl - controls a STREAM device". POSIX system call specification. The Open Group. Retrieved 19 June 2015.
  18. "What is a "segmentation violation"?". support.microfocus.com. Retrieved 2018-11-22.
  19. "Syscall User Dispatch – The Linux Kernel documentation". kernel.org. Retrieved 2021-02-11.
  20. "getrlimit, setrlimit - अधिकतम संसाधन खपत को नियंत्रित करें". POSIX system call specification. The Open Group. Retrieved 10 September 2009.
  21. Clausecker, Robert (2017-06-19). "0001151: Introduce new signal SIGWINCH and functions tcsetsize(), tcgetsize() to get/set terminal window size". Austin Group Defect Tracker. Austin Group. Retrieved 2017-10-12. Accepted As Marked
  22. "IEEE Std 1003.1-2017 - kill". IEEE, Open Group. The correspondence between integer values and the sig value used is shown in the following list. The effects of specifying any signal_number other than those listed below are undefined.
  23. 23.0 23.1 23.2 "signal(7) — Linux manual pages". manpages.courier-mta.org. Retrieved 2018-11-22.
  24. "Linux 3.0 x86_64: When is SIGSTKFLT raised?". Stack Overflow.

बाहरी संबंध