Ვისწავლოთ Linux სარდლობის - execl

სახელი: execl, execlp, execle, execv, execvp - შეასრულოს ფაილი

სინოფსისი

# შეიტანეთ

გარე შარვალი ** გარემო;

int excl (const char * გზა , const char * arg , ...);
int excl. (const char * ფაილი , const char * arg , ...);
int execle (const char * გზა , const char * arg , ..., char * const envp []);
int execv (const char * გზა , char * const arg arg []);
int execvp (const char * ფაილი , char * const arg arg []);

აღწერა

ფუნქციების შესრულებული ოჯახი ახდენს მიმდინარე პროცესის სურათს ახალ პროცესის სურათს. ამ სახელმძღვანელო გვერდზე აღწერილი ფუნქციები ფრონტის დამასრულებელი ფუნქციის შესრულებისათვის არის წინაპირობა (2). თავდაპირველი არგუმენტი ამ ფუნქციისთვის არის ფაილს, რომელიც უნდა შესრულდეს.

ექსკლუზიური , ექსკლუზიური და ექსეკის ფუნქციების კონტრაქტები და შემდგომი ელიფები შეიძლება ჩაითვალოს arg0 , arg1 , ..., argn . ერთად ისინი აღწერენ ერთი ან მეტი მითითების ჩამონათვალს null- წყდება სიმებიდან, რომლებიც წარმოადგენენ შესრულებული პროგრამისთვის არსებულ არგუმენტთა ჩამონათვალს. პირველი არგუმენტი, კონვენციის მიხედვით, უნდა მიუთითოს ფაილთან დაკავშირებულ ფაილთან დაკავშირებით . არგუმენტების სია უნდა შეწყდეს NULL მაჩვენებელი.

აღმასრულებელი და execvp ფუნქციები უზრუნველყოფს მრიცხველის მასივებს null-terminated strings რომ წარმოადგინოს არგუმენტი სია ხელმისაწვდომია ახალი პროგრამა. პირველი არგუმენტი, კონვენციის მიხედვით, უნდა მიუთითოს ფაილთან დაკავშირებულ ფაილთან დაკავშირებით. მასივების მასივი უნდა შეწყდეს NULL მაჩვენებელით.

ექსკლუზიური ფუნქცია ასევე განსაზღვრავს შესრულებული პროცესის გარემოს NULL- ის მაჩვენებლით, რომელიც წყვეტს არგუმენტების ჩამონათვალს პარამეტრ სიაში ან მაჩვენებელს დამატებითი პარამეტრით. ეს დამატებითი პარამეტრი არის null- წყდება სიმებიანი მითითებების მითითება და უნდა შეწყდეს NULL მაჩვენებელი. სხვა ფუნქციები ატარებს გარემოს პროცესს ახალი პროცესის იმიჯზე გარე პროცესის გარე ცვლადის გარემოში .

ამ ფუნქციებს აქვს სპეციალური სემანტიკა.

ფუნქციების execlp და execvp იქნება დუბლიკატი ქმედებები shell ძიებაში შესრულებადი ფაილი თუ მითითებული ფაილის სახელი არ შეიცავს slash (/) ხასიათი. ძიების გზა არის PATH ცვლადის მიერ გარემოში მითითებული გზა . თუ ეს ცვლადი არ არის მითითებული, default path ``: / bin: / usr / bin '' გამოიყენება. გარდა ამისა, გარკვეული შეცდომები მკურნალობენ სპეციალურად.

თუ ნებართვა უარყოფილია ფაილზე (მცდელობა შესრულებული დაბრუნდა EACCES ), ეს ფუნქციები გააგრძელებს ძიების დანარჩენი ძიების გზას. იმ შემთხვევაში, თუ სხვა ფაილი ვერ მოიძებნა, ისინი დაბრუნდებიან გლობალურ ცვლად შეცდომებზე, რომლებიც მითითებული იქნება EACCES- ზე .

თუ ფაილის თავკაცი არ არის აღიარებული (მცდელობა შესრულებული დაბრუნდა ENOEXEC ), ეს ფუნქციები შეასრულებს shell ფაილის ფაილის სახით, როგორც მისი პირველი არგუმენტი. (თუ ეს მცდელობა ვერ მოხერხდა, არ შემდგომი ძებნა ხდება).

დაბრუნება ღირებულება

თუ რომელიმე შესრულებული ფუნქცია ბრუნდება, შეცდომა მოხდება. დაბრუნების ღირებულება -1-ისაა და გლობალური ცვლადი შეცდომა მითითებული იქნება შეცდომა.