சி மொழியில் ஸ்லீப்() செயல்பாடு

Ci Moliyil Slip Ceyalpatu



பயனர் தொடர்பு தேவைப்படும் நிரல்களை நாங்கள் உருவாக்கும்போது, ​​பயன்பாடு படிக்கக்கூடியதாகவும் பயன்படுத்த எளிதானதாகவும் இருக்கும் வகையில் கணினி நேரங்களைச் சரிசெய்ய வேண்டிய சூழ்நிலைகள் உள்ளன.

எடுத்துக்காட்டாக, நாங்கள் ஒரு கன்சோல் பயன்பாட்டை உருவாக்குகிறோம் என்றால், வரிசையாகச் செயல்படுத்தப்படும் பணிகளைப் பயனருக்குத் தெரிவிக்க வேண்டும் என்றால், தகவல் செய்திகள் நியாயமான நேரத்திற்குத் தொடர்ந்து இருக்க வேண்டும், இதனால் பயனர் அவற்றை அழிக்கும் முன் அவற்றைப் படிக்க நேரம் கிடைக்கும். நிரல் அடுத்த கட்டளைக்கு செல்கிறது.

இந்த Linuxhint கட்டுரையில், நிகழ்நேரத்தில் தாமதங்களை உருவாக்க ஸ்லீப்() செயல்பாட்டை எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் கற்றுக் கொள்வீர்கள். இந்தச் செயல்பாட்டின் தொடரியல் மற்றும் விளக்கத்தையும், ஒரு வினாடிக்கும் குறைவான பின்னங்களுடன் தாமதங்களை உருவாக்க POSIX வழங்கும் விருப்பங்களையும் நாங்கள் உங்களுக்குக் காண்பிப்போம். பின்னர், நடைமுறை எடுத்துக்காட்டுகள், குறியீடுகள் மற்றும் படங்களைப் பயன்படுத்தி, ஒரு நிரலின் செயல்பாட்டை எவ்வாறு தாமதப்படுத்துவது மற்றும் இந்த செயல்பாட்டில் சிக்னல்களின் விளைவுகளை நாங்கள் உங்களுக்குக் காண்பிப்போம்.








சி மொழியில் ஸ்லீப்() செயல்பாட்டின் தொடரியல்



கையொப்பமிடாத முழு எண்ணாக தூங்கு ( கையொப்பமிடாத முழு எண்ணாக நொடி )

சி மொழியில் ஸ்லீப்() செயல்பாட்டின் விளக்கம்

கையொப்பமிடப்படாத முழு எண்ணாக இருக்கும் “வினாடி” உள்ளீட்டு வாதத்தில் குறிப்பிடப்பட்டுள்ள நொடிகளில் ஸ்லீப்() செயல்பாடு செயல்முறை அல்லது நூலை தூங்க வைக்கிறது. ஸ்லீப்() செயல்பாடு அழைக்கப்பட்டவுடன், அழைப்பு செயல்முறை நேரம் முடியும் வரை அல்லது ஒரு சமிக்ஞையைப் பெறும் வரை தூங்குகிறது.



நிகழ்நேர செயல்முறைகளை செயல்படுத்துவதில் 1 வினாடிக்கு மேல் நீண்ட தாமதங்களைச் செயல்படுத்த இந்தச் செயல்பாடு பெரும்பாலும் பயன்படுத்தப்படுகிறது. 1 வினாடிக்கும் குறைவான தாமதங்களுக்கு, POSIX மைக்ரோசெகண்ட் ரெசல்யூஷன் செயல்பாட்டை வழங்குகிறது, usleep(), இது ஸ்லீப்() போன்ற அதே முறை அழைப்பைப் பயன்படுத்துகிறது. 1 மைக்ரோ விநாடிக்கும் குறைவான தாமதங்களுக்கு, 1 நானோ விநாடியின் தெளிவுத்திறனுடன் nanosleep() செயல்பாடும் உள்ளது, ஆனால் தாமத நேரத்தை அமைக்க 'டைம்ஸ்பெக்' கட்டமைப்புகளை உள்ளீட்டு வாதங்களாகப் பயன்படுத்தும் வேறு அழைப்பு முறையுடன்.





ஸ்லீப்() செயல்பாடு குறிப்பிட்ட நேரம் முழுவதையும் உட்கொண்டால், அதன் விளைவாக 0 ஐ வழங்குகிறது. குறிப்பிட்ட நேரம் முடிவதற்குள் ஒரு சமிக்ஞையின் வருகையால் செயல்படுத்தல் குறுக்கிடப்பட்டால், அந்த நேரம் வரை மீதமுள்ள வினாடிகளின் எண்ணிக்கையை அது வழங்கும்.

தூக்கம்() செயல்பாடு “unistd.h” தலைப்பில் வரையறுக்கப்பட்டுள்ளது. அதைப் பயன்படுத்த, இந்தக் கோப்பை பின்வருமாறு குறியீட்டில் சேர்க்க வேண்டும்:



#உள்ளடக்க

ஸ்லீப்() செயல்பாட்டின் மூலம் ஒரு செயல்முறையில் தாமதங்களை எவ்வாறு அறிமுகப்படுத்துவது

இந்த எடுத்துக்காட்டில், எல்லையற்ற சுழற்சியைக் கொண்ட ஒரு டைமரை உருவாக்குகிறோம், அதில் கட்டளை கன்சோலில் “கடந்த நேரம்” செய்தியை அச்சிடுகிறோம், அதைத் தொடர்ந்து செயல்முறையின் கழிந்த நொடிகள். ஸ்லீப்() செயல்பாட்டினால் ஏற்படும் தாமதம் காரணமாக இந்த சுழல்கள் ஒவ்வொன்றும் ஒவ்வொரு 2 வினாடிக்கும் மீண்டும் மீண்டும் நிகழ்கிறது.

இதைச் செய்ய, '.c' நீட்டிப்புடன் ஒரு வெற்று கோப்பை எடுத்து அதில் 'stdio.h' மற்றும் 'unistd.h' தலைப்புகளைச் சேர்க்கவும். பின்னர், நாம் ஒரு வெற்று மெயின்() செயல்பாட்டைத் திறந்து அதில் எண்ணின் வகையின் மாறி வினாடிகளை வரையறுப்போம், அதை நாம் கடந்த காலத்திற்கு கவுண்டராகப் பயன்படுத்துவோம்.

தலைப்புகள் செருகப்பட்டு, மாறி அறிவிக்கப்பட்டதும், நாம் ஒரு எல்லையற்ற வளையத்தைத் திறந்து, அதில் உள்ள printf() செயல்பாட்டைப் பயன்படுத்தி செய்தியையும் நேர மதிப்பையும் காட்டுவோம். அடுத்த வரியில், நேர மாறியை 2 ஆல் அதிகரிக்கிறோம், பின்னர் ஸ்லீப்() செயல்பாட்டை 2 இன் மதிப்புடன் உள்ளீட்டு வாதமாக அழைக்கிறோம். இந்த வழியில், இந்த சுழற்சி ஒவ்வொரு நொடியும் மீண்டும் மீண்டும் செய்யப்படுகிறது மற்றும் திரையில் கழிந்த நேரத்தைக் காண்பிக்கும் ஒரு கவுண்டரைப் பெறுகிறோம். இப்போது, ​​இந்த பயன்பாட்டிற்கான குறியீட்டைப் பார்ப்போம். இந்த எடுத்துக்காட்டில் முழுமையான குறியீட்டைப் பார்ப்போம்:

# அடங்கும்
#உள்ளடக்க

வெற்றிடமானது முக்கிய ( )
{
முழு எண்ணாக வினாடிகள் = 0 ;
போது ( 1 )
{
printf ( 'கடந்த நேரம்: %i \n ' , வினாடிகள் ) ;
வினாடிகள் += 2 ;
தூங்கு ( 2 ) ;
}

}

பின்வருவனவற்றில், இந்த குறியீட்டின் தொகுப்பு மற்றும் செயல்படுத்தலுடன் ஒரு படத்தைப் பார்ப்போம். நாம் பார்க்கிறபடி, ஒவ்வொரு 2 வினாடிகளுக்கும், நிரல் செயல்பாட்டின் செயல்பாட்டிலிருந்து கடந்த வினாடிகளை திரையில் அச்சிடுகிறது.

ஸ்லீப்() செயல்பாட்டில் சிக்னல்களின் விளைவு

இந்த எடுத்துக்காட்டில், ஸ்லீப்() செயல்பாட்டைப் பயன்படுத்தி தூங்க வைக்கப்படும் ஒரு செயல்பாட்டில் சமிக்ஞைகளின் விளைவைக் கவனிக்க விரும்புகிறோம். இதைச் செய்ய, முக்கிய() செயல்பாடு மற்றும் சிக்னல் 36க்கான ஹேண்ட்லரைக் கொண்ட எளிய பயன்பாட்டை உருவாக்குகிறோம்.

மெயின்() செயல்பாட்டின் முதல் வரியில், ஸ்லீப்() செயல்பாட்டின் மூலம் வழங்கப்படும் மதிப்பை சேமிக்கும் எண்ணின் வகையின் மீதமுள்ள மாறியை அறிவிக்கிறோம். பின்னர், சிக்னல் 36 ஐ ஹேண்ட்லரை பிணைக்க சிக்னல்() செயல்பாட்டைப் பயன்படுத்துகிறோம். அடுத்த வரியில், இரண்டாவது ஷெல்லில் இருந்து செயல்முறைக்கு சிக்னலை அனுப்பப் பயன்படுத்தும் செயல்முறையின் PID ஐக் காண்பிக்கிறோம். இறுதியாக, நாம் ஸ்லீப்() செயல்பாட்டை அழைக்கிறோம் மற்றும் அதன் உள்ளீட்டு வாதத்தை 60 வினாடிகளாக அமைக்கிறோம், இது இரண்டாவது ஷெல்லில் இருந்து ஒரு சமிக்ஞையை அனுப்ப போதுமானது. மீதமுள்ள மாறியை ஸ்லீப்() க்கு வெளியீட்டு வாதமாக அனுப்புகிறோம்.

சிக்னல் 36 உடன் இணைக்கப்பட்டுள்ள ஹேண்ட்லரில் ஒரு குறியீட்டு வரிசை உள்ளது, அங்கு printf() செயல்பாடு 'மீதமுள்ள நேரம்:' செய்தியை அச்சிடுகிறது, அதைத் தொடர்ந்து சிக்னல் செயல்முறைக்கு வரும் நேரத்தில் தூக்கம்() மூலம் வழங்கப்படும் மதிப்பு. இங்கே, இந்த உதாரணத்திற்கான குறியீட்டைப் பார்ப்போம்.

# அடங்கும்
#உள்ளடக்க
# அடங்கும்
# அடங்கும்

வெற்றிடமானது கையாளுபவர் ( முழு எண்ணாக மீதமுள்ள ) ;

வெற்றிடமானது முக்கிய ( )
{
முழு எண்ணாக மீதமுள்ள ;
சமிக்ஞை ( 36 , கையாளுபவர் ) ;
printf ( 'செயல்முறை ஐடி: %i \n ' , கெட்பிட் ( ) ) ;
மீதமுள்ள = தூங்கு ( 60 ) ;
}

வெற்றிடமானது கையாளுபவர் ( முழு எண்ணாக மீதமுள்ள )

{
printf ( 'மீதமுள்ள நேரம்: %i \n ' , மீதமுள்ள ) ;
}

நாம் பார்க்கும் பின்வரும் படம் இந்தக் குறியீட்டின் தொகுப்பு மற்றும் செயல்படுத்தலைக் காட்டுகிறது:

இந்த செயல்பாட்டில் சிக்னல்களின் விளைவைக் காண, இந்த குறியீட்டை தொகுத்து அதை இயக்குகிறோம். பின்னர், இரண்டாவது முனையத்திலிருந்து, பின்வரும் தொடரியல் கொண்ட ஒரு சமிக்ஞையை அனுப்புகிறோம்:

கொல்ல - n சமிக்ஞை PID

நாம் பார்க்கும் பின்வரும் படம், முந்தைய கன்சோலில் குறியீட்டை செயல்படுத்துவதையும், பின்வரும் கன்சோலில் இருந்து அனுப்பப்படும் சிக்னலின் வருகையின் விளைவுகளையும் காட்டுகிறது. நீங்கள் பார்க்க முடியும் என, சமிக்ஞை செயல்முறையை எழுப்புவதன் மூலம் தூக்கம்() செயல்பாட்டின் விளைவை அடக்கியது:

முடிவுரை

இந்த Linuxhint கட்டுரையில், ஒரு செயல்முறையை குறிப்பிட்ட வினாடிகளுக்கு தூங்க வைப்பதற்கு ஸ்லீப்() செயல்பாட்டை எவ்வாறு பயன்படுத்துவது என்பதை நாங்கள் உங்களுக்குக் காண்பித்தோம். நாங்கள் உங்களுக்கு தொடரியல் மற்றும் செயல்பாட்டின் விளக்கத்தையும் அழைப்பு முறையையும் காட்டினோம்.

நடைமுறை எடுத்துக்காட்டுகள், குறியீடு துணுக்குகள் மற்றும் படங்கள் ஆகியவற்றைப் பயன்படுத்தி, ஒரு செயல்முறையை எவ்வாறு தூங்க வைப்பது மற்றும் ஸ்லீப்() செயல்பாட்டைப் பயன்படுத்தி ஒரு ஸ்லீப்பிங் செயல்முறையில் சிக்னலின் வருகையைப் பாதிக்கும் என்பதை நாங்கள் உங்களுக்குக் காண்பித்தோம்.