2010-07-01 16 views
7

सिग्नल हैंडलर का उपयोग करके मैं नींद() को कैसे बाधित कर सकता हूं?इंटरप्ट नींद() फ़ंक्शन

+4

अच्छा उपयोगकर्ता नाम! सवाल के लिए बहुत उपयुक्त है। –

उत्तर

5

sleep() समारोह आदमी पृष्ठ से:

sleep() समारोह या तो सेकंड सेकंड गुजर चुके है जब तक बुला धागे के निष्पादन को निलंबित कर देता है या एक संकेत धागा करने के लिए वितरित किया जाता है और अपनी कार्रवाई एक संकेत को पकड़ने समारोह आह्वान करने के लिए है या धागे या प्रक्रिया को समाप्त करने के लिए। सिस्टम गतिविधि नींद को अनिश्चित राशि से बढ़ा सकती है।

तो, अगर आवेदन को सिग्नल भेज दिया जाता है, तो नींद कॉल के बाद निर्देश से उसका निष्पादन फिर से शुरू हो जाता है।

+0

और एक सिग्नल भेजकर, इसका मतलब अलार्म() का उपयोग करना है? – sleep

+1

हाँ। बाहरी अनुप्रयोग के लिए सिग्नल भेजने के लिए आप * यूनिक्स ओएस में हैं, तो आप kill (process_id, sig) फ़ंक्शन का उपयोग कर सकते हैं। – kist

+2

@ नींद: नहीं, 'अलार्म' का उपयोग न करें। इसका मैनपेज कहता है: "एसआईजीएएलआरएम का उपयोग करके नींद (3) लागू की जा सकती है; अलार्म() और नींद (3) में कॉल मिश्रण एक बुरा विचार है।" सिग्नल भेजने के लिए, बस 'raise (3) ',' मार (2) ',' killpg (2) ',' pthread_kill (3) 'या' tgkill (2) 'का उपयोग करें। उपयोगकर्ता द्वारा परिभाषित सिग्नल 'SIGUSR1' या' SIGUSR2' का उपयोग करें। 'सिग्नल (7) 'भी देखें। – Philipp

संबंधित मुद्दे