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 :

Récupérer commande system


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 27
    Par défaut Récupérer commande system
    Bonjour,

    J'essaie de m'amuser avec les commandes système sauf que je n'arrive pas à faire ce que je veut.

    Si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int valeur;
    valeur = ('dir');
    cout << valeur ;

    J'obtiens un chiffre ( souvent un : 1 ). Normal car je stocke la valeur dans un int, sauf que j'ai beau cherché je ne vois pas comment faire pour qu'en faisant un cout j'ai le retour de ma commande systeme, au lieu que ma variable stocke un chiffre je voudrais qu'elle me stocke tout ce que je vois affiché à l'écran quand je fais cette commande dans un cmd.

    Merci d'avance de vos aides, cordialement Spiritus,

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 489

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Par défaut
    Bonjour.
    Ca marche ce code ? Ce n'est pas plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    valeur = system("dir");
    La fonction system permet de faire exécuter par l'interprète de l'OS la commande passée en paramètre. La chaîne passée en paramètre doit être l’expression complète, avec options et arguments, d’une commande légale pour le système utilisé (tiré du polycopié du cours sur le langage C, Par Henri Garreta). Et comme l'a dit bacelar, il n'est pas recommandé d'utiliser cette fonction. La fonction renvoie la valeur résultat de la commande exécutée, donc le "1" est le résultat de l’exécution de la commande dir par l'OS.

    Si vous voulez récupérer l'affichage généré par dir, vous pouvez procéder comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    char *nomfichier = "c:/monbazar/foo.txt"; // le dossier c:\monbazar doit exister au préalable
    int i;
    i = system("dir >> c:/monbazar/foo.txt");
    // Le fichier c:/monbazar/foo.txt contient maintenant le résultat de l'affichage de dir, 
    // vous pouvez l'afficher comme vous le voulez.

  4. #4
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Du code non portable aussi.
    system est très bien si on veut juste lancer un programme sans se soucier de la sortie.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 489
    Par défaut
    En lancer plein de virus par la même occasion.
    Laissez "system" mourir en paix.

  6. #6
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Je m'en suis servi pour bencher des programmes et pour lancer gnuplot, j'ai jamais eu de souci.
    system doit (peut-être) être utiliser avec soin, mais n'est pas forcément à bannir (?) (J'ai pas trouvé grand chose via Google sur la dangerosité de system)

  7. #7
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    En fait, un programme utilisant system est simple à violer, il suffit de modifier intelligemment son PATH, pour mettre le programme à exécuter devant.

    Par exemple, supposons un programme gentil faisant juste appel à system("gnuplot machin truc");.
    Il suffit de créer un programme que j'appelle gnuplot, et de faire en sorte que system() trouve le mien plutot que le programme souhaité pour être exécuté.

    Maintenant, je peux aussi m'amuser à remplacer des programmes plus important, comme rm, pour pouvoir conserver les fichiers "secrets" d'un programme mal sécurisé.

    Sachant qu'il faut trois fois rien pour savoir quelles commandes sont appelées par system.

Discussions similaires

  1. Commande system() :récupérer les data
    Par SPACHFR dans le forum Linux
    Réponses: 3
    Dernier message: 26/11/2007, 16h28
  2. Récupérer l'affichage d'une commande system
    Par Galinette1 dans le forum Langage
    Réponses: 1
    Dernier message: 29/10/2007, 19h49
  3. [awk] Récupérer une commande system dans un awk
    Par zebulon90 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 18/09/2007, 10h52
  4. Prblème avec la commande system
    Par AnneOlga dans le forum C++Builder
    Réponses: 8
    Dernier message: 04/03/2004, 16h05
  5. La commande systeme
    Par sunshine33 dans le forum MFC
    Réponses: 11
    Dernier message: 13/01/2004, 11h34

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