किसी कारण से, siginterrupt() केवल प्राप्त पहली सिग्नल के लिए व्यवहार सेट करने लगता है।siginterrupt() केवल पहले सिग्नल के लिए काम करता है? (पायथन)
इस उदाहरण प्रोग्राम में, पहला सिग्क्विट कुछ भी नहीं करता है, लेकिन दूसरा सिग्क्विट प्रिंट "सिग्क्विट हैंडलर" और एस। एसेप्ट() एक बाधित सिस्टम कॉल अपवाद फेंकता है।
from signal import *
from socket import *
import sys
def sigquitHandler(signum, frame):
print("SIGQUIT Handler")
s = socket()
s.bind(("0.0.0.0", int(sys.argv[1])))
s.listen(5)
signal(SIGQUIT, sigquitHandler)
siginterrupt(SIGQUIT, False)
client, addr = s.accept() # Or any syscall that blocks
client.close()
s.close()
मैं यहां क्या गलत समझ रहा हूं?
संपादित करें: यहाँ कुछ और है कि मैं समझ नहीं कर सकते हैं, इस कार्यक्रम में, एक SIGQUIT चयन व्यवधान()। क्या ऐसा होनेवाला है?
from signal import *
import select
import sys
def sigquitHandler(signum, frame):
print("SIGQUIT Handler")
signal(SIGQUIT, sigquitHandler)
siginterrupt(SIGQUIT, False)
select.select([sys.stdin], [], [])
मुझे लगता है कि 'siginterrupt' वास्तव में केवल सिस्टम कॉल कि डेटा (जैसे खुले रूप में पुरातन, पढ़ना या लिखना) के हस्तांतरण को शामिल करने के लिए लागू होता है देखते हैं। मुझे नहीं लगता कि यह 'चयन' जैसी सिस्टम कॉल पर लागू होता है। – mhawke
आह, ठीक है। धन्यवाद फिर से :) –