Skip to main content

காத்திருங்கள் - லினக்ஸ் கட்டளை - யூனிக்ஸ் கட்டளை

Anonim

பெயர்

காத்திருக்கவும், waitpid - செயல்முறை முடிவுக்கு காத்திருக்கவும்

கதைச்சுருக்கம்

#சேர்க்கிறது #சேர்க்கிறது

pid_t காத்திருப்பு (எண்ணாக * நிலையை );pid_t waitpid (pid_t PID , எண்ணாக * நிலையை , எண்ணாக விருப்பங்கள் );

விளக்கம்

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

திwaitpid செயல்பாடு ஒரு குழந்தை வரை குறிப்பிட்ட செயல்முறை செயலிழப்பு நிறுத்தி PID வாதம் வெளியேறியது, அல்லது சிக்னல் வழங்கப்படுவதற்கு முன்பே நடப்பு செயல்முறையை நிறுத்த அல்லது சமிக்ஞை கையாளுதல் செயல்பாட்டை அழைக்க வேண்டும். ஒரு குழந்தை வேண்டுகோள் விடுத்தால் PID அழைப்பு நேரத்தின் (ஏற்கனவே "சோம்பை" செயல்முறை என்று அழைக்கப்படுபவர்) ஏற்கனவே வெளியேறிவிட்டதால், செயல்பாடு உடனடியாக மீண்டும் வருகிறது. குழந்தை பயன்படுத்தும் எந்த கணினி வளங்களையும் விடுவிக்கப்படும்.

மதிப்பு PID ஒன்று இருக்கலாம்:

< -1

இது எந்த குழந்தை செயல்முறை காத்திருக்க வேண்டும் அதன் செயல்முறை குழு ஐடி முழுமையான மதிப்பு சமமாக PID .

-1

இது எந்த குழந்தை செயல்முறை காத்திருக்க வேண்டும் என்றால்; இதுதான் நடத்தைகாத்திரு காட்சிகள்.

0

எந்த செயல்முறை குழு ஐடி அழைப்பு செயல்முறைக்கு சமமான எந்த குழந்தை செயல்முறைக்காக காத்திருக்க வேண்டும் என்பதாகும்.

> 0

அதாவது, அதன் செயல்முறை ஐடி மதிப்புக்கு சமமான குழந்தைக்கு காத்திருக்க வேண்டும் PID .

மதிப்பு விருப்பங்கள் பூஜ்யம் அல்லது கீழ்கண்ட தொடர்ச்சியான மாறிலிகளில் ஒன்று:

WNOHANG

எந்த குழந்தையும் வெளியேறவில்லையெனில் உடனடியாக திரும்புவதைக் குறிக்கிறது.

WUNTRACED

இது நிறுத்திவைக்கப்பட்ட குழந்தைகளுக்குத் திரும்புவதைக் குறிக்கிறது மற்றும் அதன் நிலைப்பாடு வெளியிடப்படவில்லை.

(லினக்ஸ் மட்டுமே விருப்பங்கள், கீழே காண்க.)

என்றால் நிலையை இல்லைஏதுமில்லை, காத்திரு அல்லதுwaitpid ஸ்டோரில் உள்ள நிலை குறித்த தகவல் சுட்டிக்காட்டப்படுகிறது நிலையை .

இந்த நிலை பின்வரும் மேக்ரோக்களுடன் மதிப்பீடு செய்யப்படலாம் (இந்த மேக்ரோக்கள் stat buffer (aமுழு எண்ணாக) ஒரு வாதமாக --- பஃபர் ஒரு சுட்டிக்காட்டி இல்லை!):

WIFEXITED ( நிலையை )

குழந்தை சாதாரணமாக வெளியேறினால் பூஜ்யம் இல்லை.

WEXITSTATUS ( நிலையை )

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

WIFSIGNALED ( நிலையை )

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

WTERMSIG ( நிலையை )

குழந்தை செயல்முறை நிறுத்தப்படுவதற்கு காரணமாக இருந்த சமிக்ஞையின் எண்ணிக்கையைத் திரும்பப் பெறுகிறது. இந்த மேக்ரோவை மட்டுமே மதிப்பீடு செய்ய முடியும்WIFSIGNALED பூஜ்யம் அல்லாத திரும்பினார்.

WIFSTOPPED ( நிலையை )

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

WSTOPSIG ( நிலையை )

குழந்தையை நிறுத்தி வைக்கும் சிக்னலின் எண்ணிக்கையை மீண்டும் கொடுக்கிறது. இந்த மேக்ரோவை மட்டுமே மதிப்பீடு செய்ய முடியும்WIFSTOPPED பூஜ்யம் அல்லாத திரும்பினார்.

Unix (எ.கா. லினக்ஸ், Solaris, ஆனால் AIX, SunOS) ஆகிய சில பதிப்புகளும் ஒரு மேக்ரோWCOREDUMP ( நிலையை ) குழந்தை செயல்பாட்டை மையமாகக் கொண்டார்களா என்பதை சோதிக்க. WCOREDUMP #ifdef இல் …

திரும்ப மதிப்பு

குழந்தை வெளியேறும் செயல்முறை ஐடி, அல்லது பூஜ்யம் என்றால்WNOHANG பயன்படுத்தப்பட்டது மற்றும் எந்த குழந்தை இருந்தது, அல்லது -1 பிழை (எந்த வழக்கில் பிழையை பொருத்தமான மதிப்புக்கு அமைக்கப்பட்டது).

பிழைகள்

ECHILD

செயல்முறை குறிப்பிடப்பட்டால் PID இல்லையா அல்லது அழைப்பு செயல்முறை ஒரு குழந்தை அல்ல. (SIGCHLD க்கான நடவடிக்கை SIG_IGN க்கு அமைக்கப்பட்டால், இது ஒரு சொந்த குழந்தைக்கு இது நிகழலாம். நூல் பற்றிய LINUX NOTES பிரிவைக் காண்க.)

EINVAL

என்றால் விருப்பங்கள் வாதம் தவறானது.

EINTR

என்றால்WNOHANG அமைக்கப்படவில்லை மற்றும் தடைசெய்யப்படாத சிக்னல் அல்லது ஒருSIGCHLD பிடிபட்டது.