int main () {
système ("ls -l"); // exécuter «ls -l» comme processus distinct
retour 0;
}
`` '
Différences clés
* Remplacement du processus: `EXECL` remplace le processus actuel, tandis que« System »crée un nouveau processus.
* retour: `EXECL` ne revient pas au programme d'appel, tandis que« System »revient une fois la commande exécutée terminée.
* Intégration de la coquille: «Système» donne accès aux capacités du shell pour la redirection des commandes et les tuyaux, tandis que `EXECL` exécute directement un programme.
Quand utiliser chaque fonction
* `execl`: Utilisez `EXECL` lorsque vous souhaitez remplacer complètement le processus actuel par un autre programme. Il convient aux cas où le programme d'appel n'a pas besoin de se poursuivre après le début du nouveau programme.
* `System`: Utilisez «Système» lorsque vous souhaitez exécuter une commande en tant que processus distinct et conservez le contrôle du programme d'origine. Il convient aux scénarios où vous devez exécuter des commandes de shell ou rediriger l'entrée / sortie.
Notes supplémentaires
* Il existe d'autres variantes de `EXECL`:` EXECV`, `EXECLP`,` EXECVP`, etc., qui diffèrent dans la façon dont ils gèrent les arguments et les chemins de recherche.
* Les deux `EXECL` et le Système 'ont des implications de sécurité. Si vous passez une entrée fournie par l'utilisateur à ces fonctions, assurez-vous de la désinfecter pour éviter les attaques potentielles d'injection de code.