exec
exec bezeichnet eine Familie von UNIX-Funktionen, die das aktuell laufende Programm eines Prozesses durch ein anderes Programm ersetzt.
Der Prozess bleibt dabei grundsätzlich derselbe, aber sein Programmtext, Datenbereich und Kontrollfluss werden durch das neue Programm ersetzt.
execvp
int execvp(const char *file, char *const argv[]);
file: Name des auszuführenden Programmsargv: Argumentliste- Bei Erfolg kehrt
execvpnicht zurück. - Nur bei Fehler wird ein Rückgabewert geliefert.
Typisches Muster in einer Shell
pid_t pid = fork();
if (pid == 0) {
execvp(args[0], args);
// nur erreichbar, falls execvp fehlschlägt
} else {
waitpid(pid, NULL, 0);
}
Zusammenhang mit fork
fork()erzeugt einen Kindprozess.execvp()ersetzt im Kindprozess das Programm durch den auszuführenden Befehl.- Der Elternprozess kann mit
waitpid()warten.