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

Linux Discussion :

Commande system() :récupérer les data


Sujet :

Linux

  1. #1
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut Commande system() :récupérer les data
    Bonjour,

    Je ne connais pas bien l'environnement LINUX (je connais plus les z/OS mainframe), cependant je dois écrire un petit programme en C pour cet O.S.

    J'ai une question sur la commande system().
    mon pgm doit envoyer une requête SNMP puis récupérer les données issues de cette requête (un walk)
    Je passe la command via sytem(), mais je ne sais pas comment récupérer les data sans rediriger la sortie de cette commande dans un fichier.
    En fait j'amerais récupérer directement les données dans une variable sans passer par un fichier.
    Quelles sont les solutions possibles pour arriver à récupérer les data renvoyeées par la commande system()

    Merci,

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Si tu veux eviter de rediriger la sortie vers un fichier (qui est pourtant une solution propre), tu peux utiliser popen() et lire dans le flux FILE * qu'elle retourne. Voir man popen.

  3. #3
    Membre averti Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Points : 400
    Points
    400
    Par défaut
    Merci pour cette réponse, je ne connaissais pas popen().
    Je pensais que la solution via un fichier n'était très propre, cependant vue ta réponse cela semble être une solution correcte.
    Je viens de tester popen(), cela fonctionne parfaitement !!!

    Une dernière question, entre rediriger le résultat de la command system() dans un fichier et l'utilisation de popen() quelle est la solution la plus propre (la plus portable) ?


    Merci

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par SPACHFR Voir le message
    Une dernière question, entre rediriger le résultat de la command system() dans un fichier et l'utilisation de popen() quelle est la solution la plus propre (la plus portable) ?
    popen() est POSIX, donc moins portable que les fonctions ISO C (je ne sais pas si popen() est disponible sous ce nom sous Windows, par exemple). La solution utilisant la redirection vers un fichier est donc plus portable (du moment que l'OS supporte le concept de redirection! De plus, la chaine de caractere envoyee a system() peut ne pas etre portable). Mais j'aurais tendance a dire que si la solution avec popen() te plait, utilise-la !

    PS: Ne pas oublier de faire un pclose() pour fermer le flux ouvert par popen().

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

Discussions similaires

  1. récupérer les data d'un disque rootvg
    Par voran dans le forum AIX
    Réponses: 1
    Dernier message: 06/07/2012, 00h09
  2. Réponses: 1
    Dernier message: 15/05/2008, 15h29
  3. Réponses: 3
    Dernier message: 24/05/2007, 00h52
  4. Réponses: 1
    Dernier message: 16/10/2006, 13h50
  5. Réponses: 1
    Dernier message: 27/01/2006, 17h52

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