J'essaye d'implémenter la commande en ls -l
utilisant execvp
. J'ai du code
execvp("ls",&argv[0]);
fonctionne bien, mais j'utilise
execvp("ls -l",&argv[0]);
ne marche pas
Le premier argument de execvp()
doit être le nom binaire que vous souhaitez exécuter. Vous ne pouvez pas simplement ajouter des arguments supplémentaires. La liste d'arguments provient du &argv[0]
. Vous devrez créer un nouveau tableau pour insérer votre argument. Quelque chose comme ça:
char** new_args = malloc((argc + 1) * sizeof(char*));
new_args[0] = argv[0];
new_args[1] = "-l";
memcpy(&new_args[2], &argv[1], (argc - 1) * sizeof(char*));
execvp("ls", new_args);
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots