int main () {
// Versuch, den aktuellen Prozess durch "ls -l" zu ersetzen,
if (execlp ("ls", "ls", "-l", null) ==-1) {
// Erreichen Sie dies nur, wenn execlp fehlschlägt
perror ("execlp fehlgeschlagen");
Rückkehr 1;
}
// Diese Zeile wird niemals erreicht
printf ("Dies wird niemals gedruckt. \ n");
Rückkehr 0;
}
`` `
Warum `exec` nützlich ist
* Effizienz: Es vermeidet den Overhead, einen neuen Prozess zu erstellen und seinen Speicherplatz zu verwalten.
* Direkte Kontrolle: Bietet einen Mechanismus für einen Prozess, der nahtlos in ein anderes Programm übergeht.
Schlüsselpunkte
* `exec` varianten (` execl`, `execv`,` execlp`, `execvp`) haben alle das gleiche Verhalten in Bezug auf Rückgabewerte.
* Wenn `exec` fehlschlägt (z. B. nicht gefundene Datei, Erlaubnisprobleme), gibt sie` -1` zurück und legt `errno` fest, um den Fehler anzugeben.
* Um ein Programm auszuführen und dann weiterzumachen, müssen Sie "Fork" verwenden, um einen untergeordneten Prozess zu erstellen, bevor Sie "Exec" im Kind anrufen.
Lassen Sie mich wissen, ob Sie andere Fragen zu `exec` oder Prozessen in Unix haben!