למד את הפקודה לינוקס - execl

שם: execl, execlp, execle, execv, execvp - לבצע קובץ

תַקצִיר

#include

סביבה חיצונית;

execl int (const char * נתיב , const char * arg , ...);
execlp int ( קובץ char char * , const char * arg , ...);
execle int (const char * נתיב , const char * arg , ..., char * const envp []);
execv int (const char * path , char * const argv []);
int execvp ( קובץ char char *, char * const argv []);

תיאור

משפחת פונקציות exec מחליף את תמונת התהליך הנוכחי עם תמונת תהליך חדש. הפונקציות המתוארות בדף ידני זה הן חזיתית עבור הפונקציה execve (2). הארגומנט הראשוני עבור פונקציות אלה הוא שם הנתיב של קובץ שיש לבצע.

הקונסטרוקציה של הקונסטרוקציה ואחרי האליפסה הבאים בפונקציות execlp , execlp ו- execle יכולות להיחשב כארגומנט , arg1 , ... argn . יחד הם מתארים רשימה של אחד או יותר מצביעים על מחרוזות שהפסיקו null המייצגים את רשימת הטיעונים הזמינים לתכנית המתבצעת. הארגומנט הראשון, לפי האמנה, צריך להצביע על שם הקובץ המשויך לקובץ המתבצע. רשימת הארגומנטים חייבת להסתיים באמצעות מצביע NULL .

פונקציות execv ו- execvp מספקות מערך של מצביעים למחרוזות שהפסיקו null המייצגים את רשימת הארגומנטים הזמינים לתכנית החדשה. הארגומנט הראשון, לפי האמנה, צריך להצביע על שם הקובץ המשויך לקובץ המתבצע. מערך המעברים חייב להסתיים על ידי מצביע NULL .

הפונקציה execle גם מציינת את הסביבה של התהליך המבוצע על ידי מעקב אחר מצביע NULL המסיים את רשימת הארגומנטים ברשימת הפרמטרים או את המצביע למערך argv עם פרמטר נוסף. פרמטר נוסף זה הוא מערך של מצביעים למחרוזות שהפסיקו null ויש לסלקן באמצעות מצביע NULL . הפונקציות האחרות לוקחות את הסביבה לתמונת התהליך החדשה מסביבת המשתנים החיצוניים בתהליך הנוכחי.

לחלק מהתפקודים האלה יש סמנטיקה מיוחדת.

הפונקציות execlp ו- execvp ישכפלו את פעולות הקליפה בחיפוש אחר קובץ הפעלה אם שם הקובץ שצוין אינו מכיל תו קו נטוי (/). נתיב החיפוש הוא הנתיב שצוין בסביבה על ידי משתנה PATH . אם משתנה זה לא צוין, נעשה שימוש בנתיב ברירת המחדל ``: / bin: / usr / bin ''. בנוסף, טעויות מסוימות מטופלים במיוחד.

אם ההרשאה נדחתה עבור קובץ (הניסיון לבצע exacve חזר EACCES ), פונקציות אלה ימשיכו לחפש את שאר נתיב החיפוש. אם לא נמצא קובץ אחר, עם זאת, הם יחזרו עם המשתנה הגלובלי errno מוגדר EACCES .

אם הכותרת של קובץ אינה מזוהה (הניסיון לבצע exeve חזר ENOEXEC ), פונקציות אלה יבצע את הקליפה עם הנתיב של הקובץ כארגומנט הראשון שלה. (אם ניסיון זה נכשל, לא נעשה חיפוש נוסף.)

ערך החזרה

אם כל הפונקציות exec מחזירה, אירעה שגיאה. ערך ההחזרה הוא -1, והמשתנה הגלובלי errno יוגדר כדי לציין את השגיאה.