à l'aide d'un nouveau chemin avec execve pour exécuter commande ls

Je suis en train d'utiliser execve pour exécuter la commande ls. Actuellement, je suis en cours d'exécution avec les arguments suivants:

execve(args[0], args, env_args)
//args looks like {"ls", "-l", "-a", NULL}
//env_args looks like {"PATH=/bin", "USER=me", NULL}

Ce que j'attendais de ce faire est d'exécuter la commande ls à l'aide de mon nouveau env_args signification qu'il allait chercher des ls dans mon CHEMIN. Toutefois, ce code ne fait pas tout faire, et quand je lance le code, il retourne à mon invite de commande sans sortie.

À l'aide de la même args[] j'ai été en utilisant execvp et ls travaillé et cherché mon chemin.

Pouvez-vous me dire ce que je fais de mal?

Ce que j'essaie de faire est d'écrire mon propre programme de shell où je peux créer et exporter mon propre environnement, et ont exec utilisation de l'environnement que j'ai défini dans un char**. Essentiellement, je suis en train d'écrire mon propre pour fonctionner sur env_args pour ajouter et supprimer des vars et quand j'ai appeler exec je veux être en mesure d'appeler exec sur {"ls", "-l", NULL} et l'ai regarde en bas de mes nouveaux environnements variable de chemin d'accès valide pour un programme appelé ls. J'espère que c'est ce qui explique que je suis en train de faire un peu mieux. Je ne pense pas que la extern environ var de travail pour moi dans ce cas.

InformationsquelleAutor james | 2011-10-03