J'ai écrit un programme de test pour essayer de comprendre comment utiliser execvp(), mais je continue de rencontrer un problème. La partie pertinente de mon code est:comment utiliser execvp - trouver l'argument du fichier
...
printf("execute: 'ls -a'\n");
char *args[2];
args[0] = "/bin/ls";
args[1] = "ls";
args[2] = "-a";
...
} else if(pid == 0){ //child process
if(execvp(*args, args) < 0) { //execute command
fprintf(stderr, "Error: execution failed\n");
exit(1);
}
}
...
Chaque fois que je cours, je reçois une erreur «/bin/ls: ne peut pas accéder à ls: Aucun fichier ou répertoire ». which ls
me dit/bin/ls donc je ne comprends pas ce que je fais mal. Est-ce parce que le fichier exécutable ne se trouve pas dans mon répertoire personnel mais plutôt dans un fichier de projet?
Bonne et bonne réponse, mais je devais le lire quelques fois avant que je prenne votre distinction entre le "premier élément" de "args" et le "premier argument" à la commande exécutée. –
@JohnBollinger Merci, j'ai apporté quelques éclaircissements. – dbush