GNU लिनक्स (आर्क लिनक्स) पर SIGINFO गायब है


12

मैं एक एप्लिकेशन विकसित कर रहा हूं और मैं चाहूंगा कि कंसोल पर कुछ रनटाइम आँकड़े प्रिंट करें। killऔर संकेत तुरंत मेरे दिमाग में आए।

विकी पर यूनिक्स संकेतों के माध्यम से पढ़ना , SIGINFOक्योंकि जाने का तरीका पसंद है:

  • यह इन उद्देश्यों के लिए अभिप्रेत है
  • सिग्नल हैंडलर लागू नहीं होने पर प्रक्रिया को समाप्त नहीं करता है (इसके विपरीत SIGUSRx- यहां देखें )

हालाँकि, के आउटपुट का निरीक्षण करने से kill -lऐसा लगता है कि मेरे सर्वर में यह सिग्नल लागू नहीं है।

मेरे प्रश्न हैं:

  1. SIGINFOमेरे सिस्टम में क्यों कमी है? क्या यह सभी GNU लिनक्स सिस्टम पर अनुपस्थित है?
  2. क्या इस सिग्नल को सक्षम करने का एक आसान (यानी कोई कर्नेल / ग्लिबैक पुनर्संयोजन) तरीका नहीं है? यदि कोई नहीं, तो कठिन रास्ता क्या होगा?
  3. क्या वैकल्पिक संकेत मैं अपने उद्देश्यों के लिए उपयोग कर सकता हूं जो लक्ष्य प्रक्रिया द्वारा नियंत्रित नहीं होने पर किसी भी दुष्प्रभाव का कारण नहीं होगा ? (मैं पहले से ही किसी को भी नहीं मानता हूं क्योंकि मुझे glibc के मैनुअल पर कोई अन्य उपयुक्त संकेत नहीं मिला है )

लिनक्स metainfo:

Linux whatever 3.18.2-2-ARCH #1 SMP PREEMPT Fri Jan 9 07:37:51 CET 2015 x86_64 GNU/Linux

अपडेट: मैं अभी भी अधिक जानकारी के लिए देख रहा हूं कि यह संकेत बीएसडी के अलावा अन्य प्रणालियों से सशर्त रूप से बाहर क्यों रखा गया है (नीचे टिप्पणियां देखें)। संकेत कई उद्देश्यों के लिए काफी उपयोगी प्रतीत होता है, इसलिए मेरे लिए यह मानना ​​कठिन है कि यह केवल कानाफूसी का विषय है - तो क्या इस संकेत के लिए वास्तविक शोस्टॉपर लिनक्स पर उपलब्ध है?


2
करता है ^Tके उत्पादन में दिखाई देते हैं stty -a?
मार्क प्लॉटनिक

आह, यह नहीं है - मैं ddअपने मैक पर उस के साथ वर्णित व्यवहार को गलत करना चाहिए । निष्पादन के ^Tदौरान ddलिनक्स मशीन पर कुछ नहीं होता है - मैं तदनुसार प्रश्न को अपडेट करूंगा।
रॉबर्ट रॉसमैन

हाँ, Ctrl-T और SIGINFO BSD (और MacOSX) सुविधाएँ हैं।
मार्क प्लॉटनिक

लेकिन संकेत जीएनयू सी लाइब्रेरी में परिभाषित है जो लिनक्स सिस्टम का उपयोग करता है ... क्या यह तब उद्देश्य पर अक्षम है?
रॉबर्ट रॉसमैन

1
@RobertRossmann, सिग्नल कर्नेल द्वारा वितरित किए जाते हैं। सवाल यह है कि लिनक्स कर्नेल इसे लागू नहीं करता है (क्योंकि उन्होंने SysV संकेतों की प्रतिलिपि बनाई थी, शायद)।
Ángel

जवाबों:


4

इसे जोड़ने के बारे में चर्चा (लिनक्स 0.x-1.x दिनों में वापस) थी (क्योंकि यह बीएसडी सिस्टम पर उपयोगी था), लेकिन अगर मुझे सही ढंग से याद है तो कारण थे कि उस समय बीएसडी की तुलना में लिनक्स पर सही करना मुश्किल था ।

ध्यान दें कि आप जिस चीज के बारे में पूछ रहे हैं, वह सुविधा का केवल एक छोटा सा हिस्सा है (अर्थात्, आप stty infoकंट्रोल-टी के लिए एक प्रविष्टि के बारे में बात कर रहे हैं, जिससे कर्नेल को 'प्रक्रिया समूह' तक पहुंचाया SIGINFOजा सकता है tty) - वह हिस्सा "आसान" है - लेकिन कर्नेल रिपोर्ट की प्रक्रिया की स्थिति के बारे में जानकारी तब देता है जब वह सिग्नल को संभालती नहीं है (क्योंकि उस समय बहुत कम चीजों के लिए कोई समर्थन था, सुविधा मुख्य रूप से "क्या यह प्रक्रिया कताई या त्रिशंकु है" और "क्या प्रक्रिया है" यह वैसे भी ") कठिन है - ISTR वहां भी उस जानकारी को सही ढंग से प्रदर्शित करने के बारे में सुरक्षा / विश्वास के मुद्दे हैं, और क्या यह सुरक्षित ध्यान कुंजी पथ से जुड़ा होना चाहिए। उस ने कहा, "आसान" संस्करण में कुछ मूल्य हो सकता है जो केवल संकेत भेजता है ...

(व्यक्तिगत स्मृति से; एक त्वरित वेब खोज कुछ भी स्पष्ट नहीं करती है, लेकिन मुझे लगता है कि चर्चा खोजने के लिए किसी को वास्तव में पुराने अभिलेखागार में खुदाई करनी होगी ।)


1

अपने प्रश्न के बारे में 1):

से man 7 signalएक आर्क Linux सिस्टम पर:

SIGINFO 29, -, - SIGPWR का पर्यायवाची

...

(सिग्नल 29 एक अल्फा पर SIGINFO / SIGPWR है लेकिन एक स्पार्क पर SIGLOST है ।)

...

SIGPWR (जो POSIX.1-2001 में निर्दिष्ट नहीं है) आमतौर पर उन अन्य UNIX प्रणालियों पर डिफ़ॉल्ट रूप से अनदेखा किया जाता है जहां वे दिखाई देते हैं।

इस परिभाषा के अनुसार, SIGINFOकेवल अल्फा या स्पार्क आर्किटेक्चर पर उपलब्ध है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.