int main () {
systeem ("ls -l"); // voer 'ls -l' uit als een afzonderlijk proces
retourneer 0;
}
`` `
Sleutelverschillen
* Procesvervanging: `Execl` vervangt het huidige proces, terwijl` System` een nieuw proces creëert.
* Retourneer: `Execl` keert niet terug naar het aanroepprogramma, terwijl` System` retourneert nadat de uitgevoerde opdracht is voltooid.
* shell -integratie: `System` biedt toegang tot de mogelijkheden van de shell voor opdrachtverwijzing en leidingen, terwijl` execl` rechtstreeks een programma uitvoert.
Wanneer elke functie te gebruiken
* `execl`: Gebruik `execl` wanneer u het huidige proces volledig wilt vervangen door een ander programma. Het is geschikt voor gevallen waarin het aanroepprogramma niet hoeft door te gaan nadat het nieuwe programma is begonnen.
* `System`: Gebruik `System` wanneer u een opdracht als een afzonderlijk proces wilt uitvoeren en controle over het oorspronkelijke programma wilt behouden. Het is geschikt voor scenario's waarbij u shell -opdrachten moet uitvoeren of invoer/uitvoer moet omleiden.
Aanvullende notities
* Er zijn andere varianten van `execl`:` execv`, `execlp`,` execvp`, enz., Die verschillen in hoe ze omgaan met argumenten en zoekpaden.
* Zowel `execl` als` System` hebben beveiligingsimplicaties. Als u door de gebruiker geleverde invoer aan deze functies doorgeeft, zorg er dan voor dat u deze saniteert om mogelijke code-injectie-aanvallen te voorkomen.