Εντολή Linux / Unix: execvp

Ονομα

execl, execlp, execle, execv, execvp - εκτελέστε ένα αρχείο

Σύνοψη

#include

εξωτερικός χαρακτήρας ** περιβάλλον ·

int execl (const char * διαδρομή , const char * arg , ...);
int execlp (const char * αρχείο , const char * arg , ...);
int execle (const char * διαδρομή , const char * arg , ..., char * const envp []);
int execv (const char * διαδρομή , char * const argv []);
int execvp (const char * αρχείο , char * const argv []);

Επισκόπηση της εντολής

Η οικογένεια λειτουργιών exec αντικαθιστά την τρέχουσα εικόνα διεργασίας με μια νέα εικόνα διεργασίας. Οι λειτουργίες που περιγράφονται εδώ είναι εμπρόσθια όψη για τη λειτουργία εκτέλεσης (2).

Το αρχικό επιχείρημα για αυτές τις λειτουργίες είναι το όνομα διαδρομής ενός αρχείου που πρόκειται να εκτελεστεί.

Το const char * arg και οι επόμενες ελλείψεις στις εξάχουσες , execlp και execle λειτουργίες μπορούν να θεωρηθούν ως arg0 , arg1 , ..., argn . Μαζί περιγράφουν μια λίστα με έναν ή περισσότερους δείκτες σε συμβολοσειρές με τερματισμό null που αντιπροσωπεύουν τη λίστα των παραμέτρων που είναι διαθέσιμες στο εκτελεμένο πρόγραμμα. Το πρώτο επιχείρημα, κατά σύμβαση, θα πρέπει να δείχνει το όνομα του αρχείου που σχετίζεται με το αρχείο που εκτελείται. Η λίστα των παραδειγμάτων πρέπει να τερματιστεί από έναν δείκτη NULL .

Οι λειτουργίες execv και execvp παρέχουν μια σειρά από δείκτες σε συμβολοσειρές με τερματισμό null που αντιπροσωπεύουν τη λίστα των παραμέτρων που είναι διαθέσιμες στο νέο πρόγραμμα. Το πρώτο επιχείρημα, κατά σύμβαση, θα πρέπει να δείχνει το όνομα του αρχείου που σχετίζεται με το αρχείο που εκτελείται. Η σειρά των δεικτών πρέπει να τερματιστεί από έναν δείκτη NULL .

Η λειτουργία εκτέλεσης καθορίζει επίσης το περιβάλλον της διεργασίας που εκτελέστηκε ακολουθώντας τον δείκτη NULL ο οποίος τερματίζει τη λίστα των παραδειγμάτων στη λίστα παραμέτρων ή τον δείκτη στην array arv με μια πρόσθετη παράμετρο. Αυτή η πρόσθετη παράμετρος είναι μια σειρά από δείκτες σε συμβολοσειρές που έχουν τερματιστεί και πρέπει να τερματιστεί από έναν δείκτη NULL . Οι άλλες λειτουργίες παίρνουν το περιβάλλον για τη νέα εικόνα της διαδικασίας από το εξωτερικό μεταβαλλόμενο περιβάλλον στην τρέχουσα διαδικασία.

Ορισμένες από αυτές τις λειτουργίες έχουν ιδιαίτερη σημασιολογία.

Οι λειτουργίες execlp και execvp θα διπλασιάσουν τις ενέργειες του κελύφους κατά την αναζήτηση ενός εκτελέσιμου αρχείου εάν το καθορισμένο όνομα αρχείου δεν περιέχει έναν χαρακτήρα (/). Η διαδρομή αναζήτησης είναι η διαδρομή που καθορίζεται στο περιβάλλον από τη μεταβλητή PATH . Εάν αυτή η μεταβλητή δεν έχει οριστεί, χρησιμοποιείται η προεπιλεγμένη διαδρομή ``: / bin: / usr / bin ''. Επιπλέον, ορισμένα σφάλματα αντιμετωπίζονται ειδικά.

Εάν η άδεια απορρίφθηκε για ένα αρχείο (η προσπάθεια εκτέλεσης επέστρεψε το EACCES ), αυτές οι λειτουργίες θα συνεχίσουν να αναζητούν την υπόλοιπη διαδρομή αναζήτησης. Εάν όμως δεν βρεθεί άλλο αρχείο, θα επιστρέψουν με την καθολική μεταβλητή errno που έχει οριστεί σε EACCES .

Εάν η κεφαλίδα ενός αρχείου δεν αναγνωρίζεται (η επιχειρούμενη εκτέλεση επέστρεψε το ENOEXEC ), αυτές οι λειτουργίες θα εκτελούν το κέλυφος με τη διαδρομή του αρχείου ως το πρώτο του όρισμα. (Εάν αποτύχει αυτή η προσπάθεια, δεν γίνεται περαιτέρω έρευνα.)

Τιμή επιστροφής

Αν κάποια από τις λειτουργίες εκτέλεσης επιστρέψει, θα εμφανιστεί ένα σφάλμα. Η τιμή επιστροφής είναι -1 και η καθολική μεταβλητή errno θα οριστεί για να υποδείξει το σφάλμα.

Σημαντικό: Χρησιμοποιήστε την εντολή man ( % man ) για να δείτε πώς χρησιμοποιείται μια εντολή στον υπολογιστή σας.