லினக்ஸ் கட்டளை கற்க - காத்திருக்கவும்

பெயர்

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

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

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

pid_t காத்திருப்பு (int * நிலை );
pid_t waitpid (pid_t pid , int * நிலை , எண்ண விருப்பம் );

விளக்கம்

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

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

Pid இன் மதிப்பானது ஒன்று:

<-1

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

-1

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

0

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

> 0

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

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

WNOHANG

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

WUNTRACED

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

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

நிலை NULL இல்லையெனில், நிலைப்பாட்டின் மூலம் சுட்டிக்காட்டப்பட்ட இடத்திலுள்ள ஸ்டாண்ட் நிலை தகவலை காத்திருங்கள் அல்லது காத்திருங்கள் .

இந்த நிலைமை பின்வரும் மேக்ரோக்களுடன் மதிப்பீடு செய்யப்படலாம் (இந்த மேக்ரோக்கள் தடையைக் குறிக்கும் ஒரு சார்பாக ஒரு சார்பு தாங்கியை (ஒரு எண்ணாக ) ஒரு வாதமாக எடுத்துக்கொள்கின்றன):

WIFEXITED ( நிலை )

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

WEXITSTATUS ( நிலை )

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

WIFSIGNALED ( நிலை )

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

WTERMSIG ( நிலை )

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

WIFSTOPPED ( நிலை )

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

WSTOPSIG ( நிலை )

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

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

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

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

பிழைகள்

ECHILD

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

EINVAL

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

EINTR

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