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 :

disk free (df)


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut disk free (df)
    Bonjour,

    Je dispose actuellement d'un OS uClinux sur un microcontrôleur Coldfire. Je voudrais récupérer les valeurs retournées lorsque je tape la commande "df" et les enregistrer dans des variables. Par exemple, lorsque je tape "df", le terminal m'affiche:

    Total Kbytes: 2432
    Free Kbytes: 208
    Total nodes: 0
    Free nodes: 0

    Comment récupérer ces données dans une variable utilisable par un programme en C ?

    Julien.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Je dirai que tu as trois possibilités :
    1. Tu sauves le résultat dans un fichier. Ton application C lit ce fichier.
    2. Tu crées un script qui va lancer la commande df et va transmettre en tant que paramêtre le résultat à ton application C.
    3. Ton application C lance elle-même la commande df et récupère le résultat directement.
    Pour ma part je préfère la troisième solution.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    Je suis d'accord pour la 3eme solution, elle me parait a priori la plus approprié à ce que je souhaite faire. J'ai essayé en utilisant la command "system("df"), mais je ne fais que reporter le problème car je ne récupère pas les valeurs dans des variables. Ce que tu veux dire je suppose, c'est d'inclure la librairie df.h et de trouver la variable qui stocke ce dont j'ai besoin. Peux-tu m'éclaircir sur ce point ?

    Julien.

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    La fonction system(); exécute une commande mais elle ne te renvoie pas le résultat. Et non je voulais pas dire d'intégrer df à ton application.

    Il faut pouvoir lancer df un peu à la façon de system(); tout en récupérant le résultat. Pour ma part j'utilise la glib pour faire ca. Il existe des fonctions associées telle que g_spawn_command_line_sync();.

    Sinon tu peux regarder du côté de la fonction popen();. Elle fait partie de la bibliothèque standard stdio.h.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    La fonction popen() et pclose() fonctionne parfaitement. Pour ceux qui auraient un peu le même défi, voila mon code:

    FILE *fp;

    fp = popen("df", "r");
    if (fp == NULL)
    /* Handle error */;

    fgets(totalMemFrame, LINE_MAX, fp);
    fgets(freeMemFrame, LINE_MAX, fp);
    ...

    Merci !

    Julien.

Discussions similaires

  1. Réponses: 16
    Dernier message: 27/05/2017, 10h14
  2. sous Windows - no free disk space
    Par Michelk12 dans le forum Informix
    Réponses: 3
    Dernier message: 27/09/2008, 01h24
  3. mysqldump sur free
    Par bouba64 dans le forum Administration
    Réponses: 4
    Dernier message: 15/07/2003, 17h10
  4. tbitmap.free dans une function
    Par portu dans le forum Langage
    Réponses: 7
    Dernier message: 19/06/2003, 22h08

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