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

പേര്: execl, execlp, execle, execv, execvp - ഒരു ഫയല് എക്സിക്യൂട്ട് ചെയ്യുക

സംഗ്രഹം

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

ബാഹ്യമായ ചാർജ് ** പരിസ്ഥിതി;

int excl (constal char * path , const char * arg , ...);
int exclcl (കോൺ ചാര * ഫയൽ , കോൺ ചാര * ആർഗ് , ...);
int execle (constal char * path , const char * arg , ..., ചാരു * കോൺ എൻഎസ്എ );
int execv (constal char * path , ചരം * കോൺഫ് argv []);
int execvp (കോൺ ചാര * ഫയൽ , ചർ * കോൺ argv []]);

വിവരണം

പുതിയ പ്രക്രിയ ചിത്രത്തിലൂടെ നിലവിലെ പ്രക്രിയ ചിത്രത്തെ ഫംഗ്ഷനുകളുടെ നിർവഹണ കുടുംബം മാറ്റിസ്ഥാപിക്കുന്നു. ഈ മാനുവൽ പേജിൽ വിശദീകരിച്ചിരിക്കുന്ന ഫംഗ്ഷനുകൾ ഫംഗ്ഷൻ എക്സിക്യൂട്ട് (2) ന് മുൻപുള്ളവയാണ്. ഈ ഫംഗ്ഷനുകൾക്കുള്ള പ്രാരംഭ ആർഗ്യുമെന്റ് ഒരു ഫയലിന്റെ പാത്ത് നെയിം ആണ്.

Execl , execlp , execlp എന്നിവയിൽ കോൺ ചാര * ആർഗും അതിനുശേഷമുള്ള ദീർഘവൃത്തങ്ങളും arg0 , arg1 , ..., argn എന്നതായി കരുതാം . എക്സിക്യൂട്ട് ചെയ്ത പ്രോഗ്രാമിലേക്ക് ലഭ്യമായ ആർഗ്യുമെൻറ് പട്ടികയെ പ്രതിനിധീകരിക്കുന്ന പൂരിപ്പിക്കാത്ത സ്ട്രിംഗുകളിലേക്ക് ഒന്നോ അതിലധികമോ പോയിന്റുകളുടെ ലിസ്റ്റും അവർ വിവരിക്കുന്നു. കൺവെൻഷൻ ഉപയോഗിച്ചാണ് ആദ്യത്തെ ആർഗ്യുമെന്റ് ഫയൽ നടപ്പിലാക്കിയ ഫയൽ നാമവുമായി ചൂണ്ടിക്കാണിക്കേണ്ടത്. ആർഗ്യുമെന്റുകളുടെ ലിസ്റ്റ് ഒരു NULL പോയിന്റർ അവസാനിപ്പിക്കണം.

Execv , execvp എന്നീ ഫങ്ഷനുകൾ പുതിയ പ്രോഗ്രാമിൽ ലഭ്യമായ ആർഗ്യുമെൻറ് പട്ടികയെ പ്രതിനിധാനം ചെയ്യുന്ന പൂരിപ്പിക്കൽ പോയിന്റുകളിലേക്ക് പോയിന്ററുകൾ നൽകുന്നു. കൺവെൻഷൻ ഉപയോഗിച്ചാണ് ആദ്യത്തെ ആർഗ്യുമെന്റ് ഫയൽ നടപ്പിലാക്കിയ ഫയൽ നാമവുമായി ചൂണ്ടിക്കാണിക്കേണ്ടത്. പോയിന്റുകളുടെ ശ്രേണി NULL പോയിന്റർ അവസാനിപ്പിക്കണം.

പരാമീറ്റർ പട്ടികയിൽ ആർഗ്യുമെന്റുകളുടെ ലിസ്റ്റ് അല്ലെങ്കിൽ ഒരു അധിക പരാമീറ്ററുമായി ആർഗേ അറവിലേക്കുള്ള സൂചിക നിർത്തുന്ന NULL പോയിന്റർ അനുസരിച്ച് എക്സിക്യൂട്ട് പ്രോസസിന്റെ എൻവയണ്മെന്റ് എക്സിക്യൂട്ട് ചെയ്ത പ്രോസസിന്റെ എൻവയണ്മെന്റ് നൽകുന്നു. ഈ അധികമായ പരാമീറ്റർ എന്നത് പൂജ്യം അടഞ്ഞ സ്ട്രിങ്ങുകൾക്കുള്ള പോയിന്ററുകളുടെ ഒരു ശ്രേണിയാണ്, കൂടാതെ ഒരു NULL പോയിന്റർ അവസാനിപ്പിക്കണം. മറ്റ് പ്രവർത്തനങ്ങൾ നിലവിലുള്ള പ്രോസസ്സിലെ ബാഹ്യ വേരിയബിളിന്റെ എൻവയോണിൽ നിന്നും പുതിയ പ്രക്രിയ ചിത്രത്തിനായി പരിസ്ഥിതിയെ സ്വീകരിക്കുന്നു.

ഇവയിൽ ചില പ്രത്യേക സിദ്ധാന്തങ്ങൾ ഉണ്ട്.

ഫയലിന്റെ പേരു് ഒരു സ്ളാബ് (/) പ്രതീകം അടങ്ങുന്നില്ലെങ്കിൽ, ഒരു എക്സിക്യൂട്ടബിൾ ഫയൽ തെരയുന്നതിനായി പ്രവർത്തനങ്ങളുടെ execlp , execvp ഷെൽ പ്രവർത്തികളുടെ ഡ്യൂപ്ലിക്കേറ്റ് ചെയ്യും. പാഥ് വേരിയബിളിന്റെ പരിസ്ഥിതിയില് പറഞ്ഞിരിക്കുന്ന പാഥ് തെരച്ചിലിനുള്ള പാഥ് ആണ്. ഈ വേരിയബിൾ വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, സ്വതവേയുള്ള പാത്ത് ``: / bin: / usr / bin '' ഉപയോഗിയ്ക്കുന്നു. കൂടാതെ ചില പിശകുകൾ പ്രത്യേകമായി പരിഗണിക്കുന്നു.

ഒരു ഫയലിനായി അനുമതി നിരസിക്കപ്പെട്ടാൽ (ശ്രമിച്ച EACCES എക്സിക്യൂട്ട് ചെയ്തുകൊണ്ട് ), ഈ പ്രവർത്തനങ്ങൾ ബാക്കിയുള്ള തിരയൽ പാത്ത് തിരയുന്നത് തുടരും. മറ്റേതെങ്കിലും ഫയൽ കണ്ടെത്താനായില്ലെങ്കിൽ, അവർ ആഗോള വേരിയബിള് എനനോ EACCES എന്നതിലേക്ക് സെറ്റ് ചെയ്യും .

ഒരു ഫയലിന്റെ ശീർഷകം തിരിച്ചറിയാൻ സാധിച്ചില്ലെങ്കിൽ ( ENOEXEC നൽകപ്പെട്ട എക്സിക്യൂവിക്ക് നൽകിയിട്ടുണ്ടെങ്കിൽ ), ഈ ഫംഗ്ഷനുകൾ അതിന്റെ ഷെല്ലിലെ അതിന്റെ ആദ്യത്തെ ആർഗ്യുമെന്റായി ഷെൽ പ്രവർത്തിപ്പിക്കുകയും ചെയ്യും. (ഈ ശ്രമം പരാജയപ്പെടുകയാണെങ്കിൽ, കൂടുതൽ തിരച്ചിൽ പൂർത്തിയായിട്ടില്ല.)

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

എക്സിക്യൂഷൻ ഫംഗ്ഷനുകളിൽ ഏതെങ്കിലും ഒന്ന് തിരികെ വരികയാണെങ്കിൽ, ഒരു പിശക് സംഭവിക്കും. റിട്ടേൺ മൂല്യം -1 ആണ്, ആഗോള വേരിയബിളിന്റെ പിഴവ് സൂചിപ്പിക്കാൻ പിഴവ് വരുത്തണം .