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 :

Problème avec fonction system();


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Inscrit en
    Mai 2012
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 78
    Par défaut Problème avec fonction system();
    Bonjour je suis en train de faire un programme en c dans ce programme je veux à un moment connaître le nombre de processeur sur ma machine pour se faire je fais :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t=system("cat /proc/stat | grep cpu* | wc -l");
    donc ici normalement dans mon t j'ai le nombre de processeurs mais quand je fais ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int t=0;
    t=system("cat /proc/stat | grep cpu* | wc -l");
    t++;
    et que j'affiche t dans ma console j'ai

    le nombre de processeurs \n et 1

    si j'aligne les t++; genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int t=0;
    t=system("cat /proc/stat | grep cpu* | wc -l");
    t++;
    t++;
    t++;
    t++;
    je vais avoir le nombre de processus \n 4

    je comprends pas normalement system rend un entier et là c'est pas entier je comprends pas

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Citation Envoyé par http://man.developpez.com/man3/system.3.php
    VALEUR RENVOYÉE
    La valeur renvoyée est -1 en cas d'erreur (par exemple echec de fork()) ou le code de retour de la commande sinon. Ce dernier code est dans le format indiqué dans wait(2). Ansi le retour de la commande sera WEXITSTATUS(status). Dans le cas où /bin/sh ne peut pas être exécuté, le code de retour sera identique à celui d'une commande effectuant un exit(127).
    Si la valeur de string est NULL, system() renvoie une valeur non nulle si le shell est accessible, et zéro sinon.
    system() n'affecte pas le statut d'attente des autres processus fils.
    Sinon je n'ai pas tout à fait compris ce que tu demandes.
    system semble renvoyer 0 donc t = 0, tu fais une incrémentation, il vaut alors 1.
    Dans ton deuxième exemple, tu fais 4 incrémentations donc t vaut alors 4.

    Le code de retour d'un commande ou d'un programme est 0 s'il a bien fonctionné et différent de 0 si une erreur c'est produite.

    Si tu veux récupérer la valeur que wc écris sur la sortie standard, il faudra avant l'appel à system rediriger la sortie standard vers un pipe.

  3. #3
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par Alays Voir le message
    Bonjour je suis en train de faire un programme en c dans ce programme je veux à un moment connaître le nombre de processeur sur ma machine pour se faire je fais :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t=system("cat /proc/stat | grep cpu* | wc -l");
    donc ici normalement dans mon t j'ai le nombre de processeurs
    Non. Dans t tu as le status code de wc (en pratique sous linux, des flags indiquant la raison de la fin du processus et comprenant les 8 bits de poids faibles de la valeur passée à exit si la fin du processus est normale, il y a une série de macros Wxxx pour extraire ce qu'il faut), ce qui t'intéresse est envoyé sur la sortie standard. Voir popen qui devrait mieux te convenir (mais perso je lirai /proc/stat et en ferais ce que je veux plutôt que de lancer un minimun de 4 processus pour ça dont un UUOC).

  4. #4
    Inactif  
    Inscrit en
    Mai 2012
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 78
    Par défaut
    hum ok je crois que j'ai compris merci

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

Discussions similaires

  1. Problème avec fonctions et string/char
    Par vdumont dans le forum C++
    Réponses: 6
    Dernier message: 08/04/2006, 16h54
  2. Problème avec fonction
    Par Goundy dans le forum C
    Réponses: 24
    Dernier message: 01/10/2005, 20h17
  3. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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