IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

execvp: Permission denied


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut execvp: Permission denied
    Bonjour,

    j'essaye de créer un mini Shell qui execute les commandes (de base pour l'instant) qu'on lui donne.

    je bloque sur l'execution de la commande cd
    je fais entre autre:

    execvp("/usr/bin",commande);
    perror("execvp");

    où commande est un char** qui commence par cd,
    cd /users par exemple

    mais j'ai l'erreur
    execvp: Permission denied

    après 2jours de recherches je ne sais comment surmonter cette erreur.
    Merci pour vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Le premier paramètre ne doit pas être "/usr/bin".
    Pour execv() il faut que ce soit "/usr/bin/cd", et pour execvp() "cd" suffit.

    Note: Faire un appel seul à cd dans system() ou fork()+exec() ne sert à rien car ça n'affecte pas le répertoire courant du processus parent. Tu vas devoir utiliser chdir() à la place.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 440
    Points : 43 082
    Points
    43 082
    Par défaut
    Autre point, il n'y a pas de commande cd dans Linux. Tu ne trouveras donc pas de fichier "cd" dans /usr/bin ou ailleurs.
    cd est une commande interne au shell. Pour l"intégrer dans ton mini-shell, tu peux utiliser la fonction chdir signalée par Médinoc. Tu n'auras aucun besoin d'appeler execvp. Pour faire les choses bien, modifie la variable d'environnement PWD.

    Tu peux jeter un oeil sur le shell que j'ai fait :
    http://chrtophe.developpez.com/tutoriels/minisysteme/
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2017
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Merci pour les réponses, elles m'ont aidé à résoudre mes soucis. Votre tuto est juste génial, je m'y prends un peu de la même façon, je préfère y penser tout seul mais quand je rebloquerai j'irai surement y jeter un coup d'oeil.
    Bonne journée.

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 440
    Points : 43 082
    Points
    43 082
    Par défaut
    Merci pour les réponses, elles m'ont aidé à résoudre mes soucis. Votre tuto est juste génial, je m'y prends un peu de la même façon, je préfère y penser tout seul mais quand je rebloquerai j'irai surement y jeter un coup d'oeil.
    C'est une très bonne idée. Mais à noter que mon shell est loin d'être au niveau de bash par exemple.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Linux error :13: Permission Denied
    Par manue85 dans le forum Oracle
    Réponses: 11
    Dernier message: 31/03/2005, 16h53
  2. Bash - Permission Denied
    Par M.Dlb dans le forum Linux
    Réponses: 3
    Dernier message: 07/12/2004, 22h42
  3. Réponses: 4
    Dernier message: 02/11/2004, 15h18
  4. permission denied
    Par HULK dans le forum Apache
    Réponses: 2
    Dernier message: 08/04/2004, 19h46
  5. [PostgreSQL]permission denied
    Par alex2205 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/02/2003, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo