ലിനക്സ് കമാൻഡ് പഠിക്കുക - കാത്തിരിക്കുക

പേര്

കാത്തിരിക്കുക, കാത്തിരിക്കൂ - പ്രോസസ്സ് അവസാനിപ്പിക്കലിനായി കാത്തിരിക്കുക

സംഗ്രഹം

# ഉൾപ്പെടുത്തുക
# ഉൾപ്പെടുത്തുക

pid_t കാത്തിരിക്കുക (int * നില );
pid_t waitpid (pid_t pid , int * നില , int ഓപ്ഷനുകൾ );

വിവരണം

നിലവിലെ പ്രക്രിയ അവസാനിപ്പിക്കുവാനോ ഒരു സിഗ്നൽ ഹാൻഡിലിംഗ് പ്രവർത്തനം വിളിക്കുവാനോ ഒരു ചാലകം കൈമാറുന്നതുവരെ കാത്തിരിയ്ക്കുന്ന പ്രവർത്തനം നിലവിലുള്ള പ്രക്രിയയുടെ പ്രവർത്തനം നിർത്തുന്നു. ഒരു കുഞ്ഞിന് വിളിപ്പേരുള്ള സമയം കഴിഞ്ഞിട്ടുണ്ടെങ്കിൽ (ഒരു "zombie" പ്രോസസ് എന്ന് വിളിക്കപ്പെടുന്ന), ഫംഗ്ഷൻ ഉടനടി തിരിച്ചെത്തുന്നു. കുട്ടികൾ ഉപയോഗിക്കുന്ന എല്ലാ സിസ്റ്റം ഉറവിടങ്ങളും സ്വതന്ത്രമാക്കിയിരിക്കുന്നു.

PID ആർഗ്യുമെന്റിനാൽ സൂചിപ്പിച്ചിട്ടുള്ള ഒരു കുട്ടി വരെയോ അല്ലെങ്കിൽ നിലവിലെ പ്രക്രിയ അവസാനിപ്പിക്കുന്നതോ ഒരു സിഗ്നൽ കൈകാര്യം ചെയ്യൽ പ്രവർത്തനത്തെ വിളിക്കുന്നതോ ആയ ഒരു സിഗ്നൽ നൽകുന്നത് വരെ, കാത്തിരിപ്പ് പ്രവർത്തനം നിലവിലുള്ള പ്രക്രിയയെ നിർത്തിവയ്ക്കുന്നു. ഒരു കുട്ടി അപേക്ഷിച്ചിട്ടുണ്ടെങ്കിൽ, കോളിന്റെ സമയം (പുറകോട്ടുപോകുന്ന "പ്രോസസ്" എന്ന് വിളിക്കപ്പെടുന്ന സമയം) അവസാനിച്ചെങ്കിൽ പ്രവർത്തനം ഉടനെ തന്നെ നൽകുന്നു. കുട്ടികൾ ഉപയോഗിക്കുന്ന എല്ലാ സിസ്റ്റം ഉറവിടങ്ങളും സ്വതന്ത്രമാക്കിയിരിക്കുന്നു.

പിഡ് മൂല്യം ഇനിപ്പറയുന്നതിൽ ഒന്നായിരിക്കും:

<-1

ഏത് ചൈൽഡ് പ്രക്രിയയ്ക്കായും കാത്തിരിക്കുക എന്നാണ് ഇതിനർത്ഥം, പ്രോസസിന്റെ ഗ്രൂപ്പ് ഐഡി, പൈഡിന്റെ സമ്പൂർണ്ണ മൂല്യത്തിന് തുല്യമാണ്.

-1

ഏത് കുട്ടിയുടെ പ്രവർത്തനത്തിനും കാത്തിരിക്കണമെന്നാണ്. ഇങ്ങനെയുള്ള സ്വഭാവമാണ് ഇതും പ്രദർശിപ്പിക്കുന്നത്.

0

ഏത് കുട്ടിയുടെ പ്രക്രിയയ്ക്കായി കാത്തിരിക്കുന്നതിന്റെ അർത്ഥം പ്രോസസ് ഗ്രൂപ്പ് ഐഡി കോളിംഗ് പ്രോസസ്സിന് തുല്യമാണ്.

> 0

അതായത്, പ്രോസസ് ഐഡി, പൈയുടെ മൂല്യത്തിന് തുല്യമാണ്.

ഓപ്ഷനുകളുടെ മൂല്യം ഒരു OR യുടെ ദൈർഘ്യമോ അല്ലെങ്കിൽ താഴെപ്പറയുന്ന കോൺസ്റ്ററൻറുകളോ ആണ്:

വിനാംഗ്

ഒരു കുട്ടി പുറത്തുകടന്നില്ലെങ്കിൽ ഉടനടി മടങ്ങുക എന്നാണർത്ഥം.

വഴുതന

അതായത് ഗർഭിണികൾ നിർത്തിവച്ചിരിക്കുന്ന കുഞ്ഞുങ്ങൾക്കായി തിരിച്ചെത്തുന്നതും അവരുടെ സ്റ്റാറ്റസ് റിപ്പോർട്ടു ചെയ്തിട്ടില്ല.

(Linux- മാത്രം ഓപ്ഷനുകൾക്കായി, താഴെ കാണുക.)

നില NULL അല്ലങ്കിൽ, സ്റ്റാറ്റസ് പ്രകാരം സൂചിപ്പിച്ച സ്ഥലത്ത് കാത്തിരിക്കുക അല്ലെങ്കിൽ കാത്തിരിക്കേണ്ട സ്റ്റോർ സ്റ്റാറ്റസ് വിവരം.

താഴെ പറയുന്ന മാക്രോകൾ ഉപയോഗിച്ച് ഈ അവസ്ഥ വിലയിരുത്തുമ്പോൾ (ഈ മാക്രോകൾ ആർഗ്യുമെന്റായി സ്റ്റേറ്റ് ബഫർ (ഒരു int ) എടുക്കുന്നു --- ബഫറിനു് ഒരു സൂചികയല്ല !):

WIFEXITED ( നില )

കുട്ടി സാധാരണയായി പുറത്ത് കടന്നാൽ പൂജ്യമല്ലാത്തതാണ്.

WEXITSTATUS ( സ്റ്റാറ്റസ് )

ഉപേക്ഷിയ്ക്കുന്ന കുട്ടിയുടെ റിട്ടേൺ കോഡ് കുറഞ്ഞത് എട്ട് ബിറ്റുകളായി വിലയിരുത്തുന്നു, അവ പുറത്തേക്ക് () പുറകോട്ടുവാനുള്ള ഒരു വാദത്തിന് അല്ലെങ്കിൽ പ്രധാന പ്രോഗ്രാമിലെ റിട്ടേൺ പ്രസ്താവനയ്ക്കുള്ള ആർഗ്യുമെന്റ് ആയി നിശ്ചയിച്ചിരിക്കാം. WIFEXITED പൂജ്യം മടക്കി നൽകിയില്ലെങ്കിൽ മാത്രമേ ഈ മാക്രോ കണക്കാക്കാൻ കഴിയൂ.

WIFSIGNALED ( സ്റ്റാറ്റസ് )

ഒരു കുത്തിവയ്പിൽ നിന്നും കുട്ടിപ്രക്രിയ അവസാനിച്ചു കഴിഞ്ഞാൽ അത് ശരിയാണു്.

WTERMSIG ( നില )

കുട്ടിയുടെ പ്രോസസ്സ് അവസാനിപ്പിക്കുന്നതിന് കാരണമായ സിഗ്നലിന്റെ എണ്ണം നൽകുന്നു. പൂജ്യം പൂജ്യമല്ലാത്ത WIFSIGNALED നൽകിയാൽ മാത്രമേ ഈ മാക്രോ കണക്കാക്കാൻ കഴിയൂ.

വൈഫ്സ്റ്റോപ്പ് ചെയ്തത് ( നില )

റിട്ടേൺ ചെയ്ത കുട്ടി പ്രക്രിയ നിലവിൽ നിർത്തിയാൽ ശരിയാണ്. WUNTRACED ഉപയോഗിച്ച് കോൾ ചെയ്തെങ്കിൽ മാത്രമേ ഇത് സാധ്യമാകൂ.

WSTOPSIG ( നില )

കുട്ടിയെ നിർത്തിവയ്ക്കാൻ കാരണമായ സിഗ്നലിന്റെ എണ്ണം നൽകുന്നു. WIFSTOPPED പൂജ്യം അല്ലാത്തെങ്കിൽ മാത്രമേ ഈ മാക്രോ കണക്കാക്കാൻ കഴിയൂ.

യുണിക്സ് (ഉദാ: ലിനക്സ്, സോളാരിസ്, എന്നാൽ AIX, SunOS എന്നിവ) ചില പതിപ്പുകളും കുട്ടിയുടെ പ്രോസസ്സ് ഉപേക്ഷിച്ചോ എന്ന് പരിശോധിക്കാൻ മാക്രോ WCOREDUMP ( സ്റ്റാറ്റസ് ) നിർവചിക്കുന്നു. ഇത് WCOREDUMP #fdef ൽ മാത്രം ചേർക്കുന്നു ... #endif.

മടങ്ങുക മൂല്യം

വിഎൻഎച്എൻആൻജി ഉപയോഗിച്ചിട്ടുണ്ടെങ്കിൽ, അല്ലെങ്കിൽ കുട്ടി ലഭ്യമായില്ലെങ്കിൽ അല്ലെങ്കിൽ പൂജ്യത്തിൽ (അല്ലെങ്കിൽ തെറ്റായ ഒരു മൂല്യത്തിൽ സെറ്റ് ചെയ്തതിൽ ) ഒരു കുഞ്ഞിന്റെ പ്രോസസ് ഐഡി അവസാനിക്കുന്നു .

പിശകുകൾ

ECHILD

പ്രക്രിയ വ്യക്തമാക്കിയെങ്കിൽ പിഡ് നിലവിലില്ല അല്ലെങ്കിൽ കോളിംഗ് പ്രക്രിയയുടെ കുട്ടി അല്ല. (SIGCHLD ന് വേണ്ടിയുള്ള പ്രവർത്തനം SIG_IGN ആയി സജ്ജമാക്കിയാൽ ഇത് സ്വന്തം കുട്ടിക്കായി ഇത് സംഭവിക്കാം. ത്രെഡുകളെ കുറിച്ച് LINUX NOTES വിഭാഗം കാണുക.)

EINVAL

ഓപ്ഷനുകൾ ആർഗ്യുമെന്റ് അസാധുവാണെങ്കിൽ.

EINTR

വിഎൻഎച്എൻഎൻജി സജ്ജീകരിച്ചില്ലെങ്കിൽ അൺബ്ലോക്ക് ചെയ്ത ഒരു സിഗ്നൽ അല്ലെങ്കിൽ ഒരു SIGCHLD പിടിക്കപ്പെട്ടു.