int main () {
// Forsøk å erstatte den nåværende prosessen med "LS -L"
if (execlp ("ls", "ls", "-l", null) ==-1) {
// bare nå dette hvis execlp mislykkes
Perror ("execlp mislyktes");
retur 1;
}
// Denne linjen vil aldri bli nådd
printf ("Dette vil aldri bli skrevet ut. \ n");
retur 0;
}
`` `
hvorfor `exec` er nyttig
* Effektivitet: Den unngår overhead ved å lage en ny prosess og administrere minneplassen.
* Direkte kontroll: Tilbyr en mekanisme for en prosess for å sømløst gå over til et annet program.
Nøkkelpunkter
* `exec` varianter (` execl`, `execv`,` execlp`, `execvp`) har alle samme oppførsel når det gjelder returverdier.
* Hvis `exec` mislykkes (f.eks. Fil ikke funnet, tillatelsesproblemer), returnerer den` -1` og setter `errno` for å indikere feilen.
* For å få et program utføre et annet og deretter fortsette, må du bruke `gaffel` for å lage en barneprosess før du ringer` exec` i barnet.
Gi meg beskjed hvis du har andre spørsmål om `exec` eller prosesser i UNIX!