Անուն
execl, execlp, execle, execv, execvp - ֆայլը կատարել
Սինոփսիս
#include
extern char ** միջավայրում;
int execl (const char * path , const char * arg , ...);
int execlp (const char * ֆայլ , const char * arg , ...);
int execle (const char * path , const char * arg , ..., char * const envp []);
int execv (const char * path , char * const argv []);
int execvp (const char * ֆայլ , char * const argv []);
Հրամանատարության ակնարկ
Գործառույթների exec ընտանիքը փոխարինում է ընթացիկ գործընթացի պատկերը նոր գործընթացի պատկերով: Այստեղ նկարագրված գործառույթներն ընդգրկում են ֆունկցիայի իրականացման համար (2):
Այս գործառույթների նախնական փաստարկը ֆայլի ուղին է, որը պետք է կատարվի:
The const char * arg եւ հետագա ellipses է execl , execlp եւ execle գործառույթները կարող են մտածել որպես arg0 , arg1 , ..., argn . Միասին նրանք նկարագրում են մեկ կամ ավելի ցուցիչների ցուցակը, null-terminated տողերի համար, որոնք ներկայացնում են կատարված ծրագրի համար մատչելի փաստարկների ցուցակը: Առաջին փաստարկը, ըստ կոնվենցիայով, պետք է մատնանշի ֆայլի հետ կապված ֆայլի անվանումը : Արժեթղթերի ցանկը պետք է դադարեցվի NULL ցուցիչի կողմից:
Execv- ի եւ execvp- ի գործառույթները ապահովում են մի շարք ցուցիչների, նոր ծրագրի համար մատչելի փաստարկների ցանկը ներկայացնող null-terminated տողերը: Առաջին փաստարկը, ըստ կոնվենցիայով, պետք է մատնանշի ֆայլի հետ կապված ֆայլի անվանումը: Ցուցանիշների զանգվածը պետք է դադարեցվի NULL ցուցիչով:
Կատարման գործառույթը նաեւ սահմանում է կատարված գործընթացի միջավայրը, հետեւելով NULL ցուցիչին, որը դադարեցնում է պարամետրերի ցուցակի մեջ փաստարկների ցանկը կամ լրացուցիչ պարամետով argv զանգվածի ցուցիչը: Այս լրացուցիչ պարամետրը null-terminated տողերի ցուցիչների զանգվածն է եւ պետք է դադարեցվի NULL ցուցիչի կողմից: Մյուս գործառույթները շրջակա միջավայրն են `ընթացիկ գործընթացում արտաքին փոփոխական միջավայրում նոր գործընթացի պատկերը ձեւավորելու համար:
Այս գործառույթներից մի քանիսը ունեն հատուկ սեմինիկա:
Ֆունկցիաների execlp- ը եւ execvp- ը կրկնօրինակում են սխալի գործողությունները կատարվող ֆայլի որոնման մեջ, եթե նշված ֆայլի անունը չի պարունակում սեղմ (/) բնույթ: Որոնման ուղին PATH փոփոխականով շրջակա միջավայրում նշված ուղին է: Եթե այս փոփոխականը նշված չէ, ապա օգտագործվում է `` `/ bin: / usr / bin 'կանխադրված ուղին: Բացի այդ, որոշ սխալներ վերաբերվում են հատուկ:
Եթե թույլտվությունը մերժվում է ֆայլի համար ( փորձարկված վերադարձված EACCES- ի վերագործարկումը ), այս գործառույթները կշարունակեն փնտրել որոնման մյուս ճանապարհը: Եթե որեւէ այլ ֆայլ չի գտնվել, ապա նրանք կվերադառնան EACCES- ի գլոբալ փոփոխական errno- ով :
Եթե ֆայլի վերնագիրը չի ճանաչվում ( փորձարկվել է վերադարձված ENOEXEC- ը ), ապա այդ գործառույթները ֆայլը կուղարկեն որպես առաջին փաստարկը: (Եթե այդ փորձը ձախողվի, հետագա որոնումներ չեն կատարվում):
Վերադարձի արժեքը
Եթե exec գործառույթներից որեւէ մեկը վերադառնա, սխալ տեղի կունենա: Վերադարձի արժեքը -1 է, եւ գլոբալ փոփոխական errno- ը կկիրառվի սխալը նշելու համար:
Կարեւոր է. Օգտագործեք հրամանատարությունը ( % մարդ ), որպեսզի տեսնեք, թե ինչպես է օգտագործվում հրամանը ձեր որոշակի համակարգչում: