Ειδικά:
* `errno` θα ρυθμιστεί: Η παγκόσμια μεταβλητή `errno` θα οριστεί για να υποδείξει το σφάλμα. Η πιο πιθανή τιμή θα είναι `enoexec` (εκτελέσιμο σφάλμα μορφής), που σημαίνει ότι το αρχείο δεν είναι έγκυρο εκτελέσιμο για την τρέχουσα αρχιτεκτονική ή` eACCES` (αρνήθηκε η άδεια), που σημαίνει ότι η διαδικασία δεν έχει άδεια να εκτελέσει το αρχείο (ακόμη και αν είναι έγκυρο εκτελέσιμο). Άλλα σφάλματα είναι δυνατά ανάλογα με τις συγκεκριμένες περιστάσεις (όπως το αρχείο που δεν βρίσκεται, "Enoent").
* Η αρχική διαδικασία συνεχίζεται: Η αρχική διαδικασία θα συνεχίσει * να τρέχει. Η κλήση `exec` θα επιστρέψει -1, και το πρόγραμμα θα συνεχίσει την εκτέλεση από το σημείο μετά την αποτυχημένη` exec` call. Αυτό είναι κρίσιμο. Δεν τερματίζει τη διαδικασία. Ο κωδικός σας θα πρέπει να ελέγξει την τιμή επιστροφής του `exec` για να χειριστεί αυτό το σφάλμα. Απλά αγνοώντας την τιμή επιστροφής μπορεί να οδηγήσει σε λεπτές και δύσκολες σφάλματα.
Παράδειγμα (c):
`` `c
#include
#include
#include
#include
int main () {
int ret =execl (".
αν (ret ==-1) {
fprintf (stderr, "execl απέτυχε:%s \ n", strerror (errno));
επιστροφή 1; // αναφέρετε ένα σφάλμα
}
// Αυτή η γραμμή θα επιτευχθεί μόνο αν πετύχει η Execl (κάτι που δεν θα γίνει σε αυτό το παράδειγμα)
printf ("Αυτό δεν πρέπει να εκτυπωθεί. \ n");
επιστροφή 0;
}
`` `
Αυτός ο κώδικας επιχειρεί να εκτελέσει ένα ανύπαρκτο πρόγραμμα. Η κλήση `execl` θα αποτύχει,` errno` θα ρυθμιστεί (πιθανόν να «enoent»), `strerror (errno)` θα δώσει ένα μήνυμα ανάγνωστο από τον άνθρωπο και το πρόγραμμα θα εκτυπώσει το σφάλμα και θα εξέλθει με μια κατάσταση μη μηδενικού. Εάν το αρχείο υπήρχε, αλλά δεν είχε άδεια εκτέλεσης, το `errno` θα ήταν πιθανώς` eacces`.
Εν ολίγοις, μια αποτυχημένη `exec` call λόγω ενός μη εκτελούμενου αρχείου είναι ένα σφάλμα χρόνου εκτέλεσης που πρέπει να αντιμετωπιστεί ρητά μέσα στο πρόγραμμά σας για να αποφευχθεί η απροσδόκητη συμπεριφορά. Πάντα να ελέγχετε την τιμή επιστροφής του `exec` και να χειριστείτε τα σφάλματα κατάλληλα.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα