فرمان لینوکس / یونیکس: execvp

نام

execl، execlp، execle، execv، execvp - اجرای یک پرونده

خلاصه داستان

#include

extern char ** environ؛

int execl (const char * path ، const char * arg ، ...)؛
int execlp (const char * file ، const char * arg ، ...)؛
int execl (const char * path ، const char * arg ، ...، char * const envp [])؛
int execv (const char * path ، char * const argv [])؛
int execvp (const char * file ، char * const argv [])؛

بررسی اجمالی فرماندهی

خانواده اجرایی توابع با تصویر فرایند جدید جایگزین تصویر پردازش فعلی می شود. توابع شرح داده شده در این قسمت جلویی برای تابع execve (2) هستند.

استدلال اولیه برای این توابع، نام راه برای یک فایل است که باید اجرا شود.

const char * arg و ellipses بعدی در execl ، execlp و execute توابع را می توان به عنوان arg0 ، arg1 ، ...، argn ادعا کرد . با هم آنها یک لیست از یک یا چند اشاره گر را به رشته های خالی که نشان دهنده لیست استدلال موجود در برنامه اجرا شده است را توصیف می کند. اولین آرایه، با توافق، باید به نام فایل مرتبط با فایل اجرا شود. فهرست آرگومان باید توسط یک نشانگر NULL خاتمه یابد.

توابع execv و execvp یک آرایه از اشاره گرها را به رشته های خالی پایان می دهد که لیست استدلال موجود در برنامه جدید را نشان می دهد. اولین آرایه، با توافق، باید به نام فایل مرتبط با فایل اجرا شود. آرایه ای از اشاره گرها باید توسط یک اشاره گر NULL خاتمه یابد.

تابع execle همچنین محیط پروسه اعداد را با دنبال کردن اشاره گر NULL که فهرست آرگومان ها را در لیست پارامترها یا اشاره گر به آرایه argv با پارامتر اضافی متوقف می کند، مشخص می کند. این پارامتر اضافی آرایه ای از اشاره گرها به رشته های خالی است و باید توسط یک اشاره گر NULL خاتمه یابد. توابع دیگر محیط را برای تصویر پردازش جدید از محیط متغیر خارجی در روند فعلی می گیرد.

برخی از این توابع معانی خاصی دارند.

توابع execlp و execvp عملکردهای پوسته را در جستجو برای یک فایل اجرایی تکرار می کنند اگر نام فایل مشخص شده حاوی یک اسکچ (/) نباشد. مسیر جستجو مسیری است که در متغیر PATH در محیط مشخص شده است. اگر این متغیر مشخص نشده باشد، مسیر پیش فرض ``: / bin: / usr / bin '' استفاده می شود. علاوه بر این، خطاهای خاص به ویژه مورد توجه قرار می گیرند.

اگر مجوز برای یک فایل رد شود (تلاش برای اجرای EACCES بازگشت)، این توابع جستجو در بقیه مسیر جستجو ادامه خواهد داد. اگر هیچ فایل دیگر یافت نشد، با این حال، متغیر جهانی errno به EACCES باز می گردد .

اگر هدر یک فایل شناسایی نشده باشد (تلاش برای اجرای ENOEXEC )، این توابع پوسته را با مسیر فایل به عنوان اولین استدلال اجرا می کند. (اگر این تلاش ناکام باشد، جستجوی بیشتر انجام نمی شود.)

ارزش بازگشت

اگر هر کدام از تابع exec را باز گرداند، خطایی رخ خواهد داد. مقدار بازگشتی -1 است و متغیر جهانی errno برای نشان دادن خطا تنظیم خواهد شد.

مهم: از دستور man ( ٪ man ) برای دیدن نحوه استفاده از دستور در رایانه خاص خود استفاده کنید.