Πρωτότυπο:
```γ
int execlp(const char *αρχείο, const char *arg0, ..., const char *argn, (char *) NULL);
```
Επιχειρήματα:
- `αρχείο`:Αυτή είναι η διαδρομή προς το εκτελέσιμο αρχείο ή πρόγραμμα που θέλετε να εκτελέσετε.
- `arg0`, `...,` `argn`:Αυτοί είναι δείκτες σε συμβολοσειρές με μηδενικό τερματισμό που αντιπροσωπεύουν τα ορίσματα της γραμμής εντολών που πρέπει να περάσουν στο νέο πρόγραμμα. Το "arg0" πρέπει πάντα να είναι το όνομα του ίδιου του προγράμματος.
- `(char *) NULL`:Αυτός είναι ένας υποχρεωτικός μηδενικός δείκτης στο τέλος της λίστας ορισμάτων. Χρησιμεύει ως οριοθέτης για να υποδείξει το τέλος της λίστας ορισμάτων.
Περιγραφή:
- Το `execlp()` είναι μια παραλλαγή της κλήσης συστήματος `execl()` που χρησιμοποιεί έναν απλοποιημένο, αλλά ευέλικτο τρόπο μετάδοσης ορισμάτων στο νέο πρόγραμμα. Αναζητά αυτόματα το εκτελέσιμο αρχείο στους καταλόγους που καθορίζονται από τη μεταβλητή περιβάλλοντος «PATH».
- Όταν καλείται «execlp()», η τρέχουσα εκτελούμενη διεργασία αντικαθίσταται από το νέο πρόγραμμα που καθορίζεται από το «αρχείο». Τα ορίσματα `arg0`, `...,` `argn` μεταβιβάζονται ως ορίσματα γραμμής εντολών στο νέο πρόγραμμα.
- Το `execlp()` δεν επιστρέφει στη διαδικασία κλήσης. Αντίθετα, μεταφέρει τον έλεγχο στο νέο πρόγραμμα, το οποίο ξεκινά την εκτέλεση. Εάν υπάρχουν σφάλματα κατά την εκτέλεση της `execlp()`, όπως η μη εύρεση του εκτελέσιμου αρχείου ή ανεπαρκή δικαιώματα, η κλήση `execlp()` θα αποτύχει και θα επιστρέψει -1, αφήνοντας ανεπηρέαστη την τρέχουσα διαδικασία.
Παράδειγμα:
```γ
#include
#include
int main() {
// Εκτελέστε την εντολή "ls -l".
execlp("ls", "ls", "-l", (char *) NULL);
// Αυτή η γραμμή θα εκτελεστεί μόνο εάν αποτύχει η execlp().
σφάλμα ("execlp() απέτυχε");
επιστροφή 0;
}
```
Σε αυτό το παράδειγμα, η κλήση συστήματος `execlp()` εκτελεί την εντολή "ls -l", η οποία παραθέτει τα αρχεία στον τρέχοντα κατάλογο με λεπτομερείς πληροφορίες. Εάν η `execlp()` είναι επιτυχής, η εντολή "ls -l" θα εκτελεστεί και το στοιχείο ελέγχου θα μεταφερθεί στο πρόγραμμα `ls`. Εάν το `execlp()` αντιμετωπίσει σφάλμα, η συνάρτηση `perror()` θα εκτυπώσει ένα μήνυμα σφάλματος στην τυπική ροή σφαλμάτων ("stderr").
Σημαντικά σημεία:
- Η `execlp()` είναι μία από τις πολλές οικογενειακές συναρτήσεις `exec()` στο Linux που εκτελούν την ίδια εργασία εκτέλεσης νέων προγραμμάτων αλλά με διαφορετικούς μηχανισμούς χειρισμού ορισμάτων. Άλλες κοινές συναρτήσεις «exec()» περιλαμβάνουν τις «execl()», «execv()», «execvp()» και «execve()».
- Το `execlp()` πραγματοποιεί αναζήτηση μόνο για το εκτελέσιμο αρχείο στους καταλόγους που καθορίζονται από τη μεταβλητή περιβάλλοντος `PATH`, επομένως είναι σημαντικό να διασφαλιστεί ότι το εκτελέσιμο αρχείο υπάρχει σε έναν από αυτούς τους καταλόγους.
- Τα ορίσματα `arg0`, `...,` `argn` πρέπει να είναι μηδενικές συμβολοσειρές. Η μετάδοση συμβολοσειρών που δεν τερματίζονται με null ή η προσπάθεια να περάσουν περισσότερα ορίσματα από αυτά που μπορεί να χειριστεί η συνάρτηση μπορεί να οδηγήσει σε απροσδιόριστη συμπεριφορά.
- Η κλήση συστήματος `execlp()` χρησιμοποιείται σε πολλά λειτουργικά συστήματα που μοιάζουν με Unix, όχι μόνο στο Linux.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα