int main () {
// Försök att ersätta den aktuella processen med "LS -L"
if (execlp ("ls", "ls", "-l", null) ==-1) {
// når bara detta om execlp misslyckas
perror ("execlp misslyckades");
return 1;
}
// Denna linje kommer aldrig att nås
printf ("Detta kommer aldrig att skrivas ut. \ n");
return 0;
}
`` `
Varför `exec` är användbart
* Effektivitet: Det undviker omkostnaderna för att skapa en ny process och hantera dess minnesutrymme.
* Direktkontroll: Ger en mekanism för en process för att sömlöst övergå till ett annat program.
Nyckelpunkter
* `exec` varianter (` execl`, `execv`,` execlp`, `execvp`) har alla samma beteende när det gäller returvärden.
* Om "exec" misslyckas (t.ex. fil inte hittas, tillståndsproblem), returnerar den "-1" och ställer in "errno" för att ange felet.
* För att få ett program att utföra ett annat och sedan fortsätta, måste du använda `Fork 'för att skapa en barnprocess innan du ringer` exec' i barnet.
Låt mig veta om du har några andra frågor om "exec" eller processer i Unix!