تعلم قيادة لينكس - execl

الاسم: 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 execle (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 [])؛

وصف

تحل عائلة exec من الوظائف محل صورة العملية الحالية مع صورة عملية جديدة. الوظائف الموضحة في هذه الصفحة اليدوية هي نهايات أمامية لوظيفة execve (2). الوسيطة الأولية لهذه الدالات هي مسار ملف يتم تنفيذه.

يمكن اعتبار arg const * arg والأشكال اللاحقة في execl ، execlp ، و execle بالوظائف مثل arg0 ، arg1 ، ... ، argn . معا يصفون قائمة من واحد أو أكثر من المؤشرات إلى سلاسل منتهية خالية والتي تمثل قائمة الوسيطة المتاحة للبرنامج المنفذة. يجب أن تشير الوسيطة الأولى ، حسب الاصطلاح ، إلى اسم الملف المقترن بالملف الجاري تنفيذه. يجب إنهاء قائمة الوسائط بواسطة مؤشر NULL .

توفر الدالتان execv و execvp صفيف من المؤشرات إلى سلاسل منتهية خالية تمثل قيمة قائمة الوسيطة المتاحة للبرنامج الجديد. يجب أن تشير الوسيطة الأولى ، حسب الاصطلاح ، إلى اسم الملف المقترن بالملف الجاري تنفيذه. يجب إنهاء صفيف المؤشرات بواسطة مؤشر NULL .

تحدد الدالة execle أيضاً بيئة العملية المنفذة باتباع مؤشر NULL إنهاء قائمة الوسائط في قائمة المعلمات أو المؤشر إلى صفيف argv مع معلمة إضافية. هذه المعلمة إضافية هو صفيف مؤشرات إلى سلاسل منتهية خالية ويجب إنهاء بواسطة مؤشر NULL . تأخذ الوظائف الأخرى البيئة لصورة العملية الجديدة من البيئة الخارجية المتغيرة في العملية الحالية.

بعض هذه الوظائف لها دلالات خاصة.

ستقوم وظائف execlp و execvp بتكرار إجراءات shell في البحث عن ملف قابل للتنفيذ إذا كان اسم الملف المحدد لا يحتوي على حرف شرطة مائلة (/). مسار البحث هو المسار المحدد في البيئة من خلال متغير PATH . إذا لم يتم تحديد هذا المتغير ، فسيتم استخدام المسار الافتراضي ``: / bin: / usr / bin '. بالإضافة إلى ذلك ، يتم التعامل مع بعض الأخطاء بشكل خاص.

إذا تم رفض الإذن لملف (حاول execve execve إرجاع EACCES ) ، فستستمر هذه الوظائف في البحث عن بقية مسار البحث. إذا لم يتم العثور على أي ملف آخر ، فسيتم إرجاعه مع تعيين متغير المتغير العام إلى EACCES .

إذا لم يتم التعرف على رأس الملف (حاول execve execve ENOEXEC ) ، فستقوم هذه الوظائف بتنفيذ shell بمسار الملف كوسيطة أولى له. (في حالة فشل هذه المحاولة ، لن يتم إجراء أي بحث إضافي).

قيمة الإرجاع

في حالة إرجاع أي من دوال exec ، حدث خطأ ما. قيمة الإرجاع هي -1 ، وسيتم تعيين errno المتغير الشامل للإشارة إلى الخطأ.