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 :

utilisation de execve


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 49
    Par défaut utilisation de execve
    Bonjour!
    Je veux passer en paramètre "1> ma_sortie" au programme appélé par execve pour qu'il y mette la sortie du programme, mais il le refuse !
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <unistd.h>
    #include <stdio.h>
     
    int main(int argc, char* argv[]){
     extern char **environ;
     char *params[] = {"mount", "-t", "ext3", "1> resultat", 0};
     execve("/bin/mount", params, environ);
     printf("Fin du Programme\n");
     return 0;
    }

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    c'est execve qui refuse..quoi ?

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 49
    Par défaut
    non, il donne mal le parametre à mount, quand on appelle la fonction mount il le considère comme un de ses paramètres et te renvoie vers help!!

  4. #4
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    Tu as testé ta commande en mode ligne de commande déja tellle que tu la décris dans le programme (je dis bien testé en ligne de commande pas en regardant l'aide de mount)

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 49
    Par défaut
    ça marche ça probleme en ligne de commande!!( $ mount -t ext3 1> file_out )
    il ne renvoie la sortie standart vers le fichier donné en paramètre(1> file), quand je veux faire la meme chose avec un execve ça ne marche pas à cause de "1>file_out"!

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    À ma connaissance, les redirections ne marchent pas dans execXX(). Il faut faire la redirection soi-même avant le execXX(), ou les faire faire par le shell (généralement avec system()).
    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.

  7. #7
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 49
    Par défaut
    Pouvez vous être plus explicite sur la solution ))

  8. #8
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    system ?

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 391
    Par défaut
    Soit du fais des pipe() et des dup2() sur STDIN_FILENO/STDOUT_FILENO avant d'appeler execXX(), soit tu appelles directement le programme avec system("mount -t ext3 1>resultat");.

    Note: Tu es concient qu'avec execXX(), ton printf() ne sera jamais exécuté si ça marche ? C'est le genre de cas où tu devrais retourner EXIT_FAILURE, puisqu'on n'arrivera au return que si execXX() échoue...
    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.

  10. #10
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 49
    Par défaut
    Merci beaucoup pour la porte de sortie!

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

Discussions similaires

  1. Utilisation d'execve sur linux 2.6
    Par maofan dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/05/2013, 11h59
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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