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 :

execution d'une commande en C


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Par défaut execution d'une commande en C
    Bonjour à tous s'il vous plait je voudrais ecrire en C sous linux Programme qui prend une commande en argument et l'execute. j'ai écri ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    #include <stdlib.h>
    int main(int argc,char* argv[])
    {
       int i;
       char commande[1024];
       printf ("\n Lancement du programme %s\n\n",argv[0]);
        for( i==1; i<argc; i++)
         {
           sprintf(commande,"%s",argv[i]);
           system(commande);
          }
    }
    son execution affiche plusieurs fois le premier printf j comprend pas pourquoi
    Merci de me proposer une solution

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Par défaut
    Bonjour,

    Dans ta boucle, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for( i==1; i<argc; i++)
    par
    Explication du comportement de l'erreur :
    Dans le code fourni, i n'est pas initialisé, (i==1) vaut donc 0. i a une chance sur la portée d'un int de valoir 1 (chance très faible donc) et donc que (i==1) ait pour valeur 1.
    De fait le code execute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sprintf(commande,"%s",argv[i]);
           system(commande);
    il execute system(argv[0]) ce qui est égal au nom du programme, donc son propre programme, ce qui fait qu'il est appelé en chaine et ne cesse de s'exécuter et donc tu as plein de printf.

  3. #3
    Membre confirmé Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Par défaut
    Il y a un probleme dans ta boucle for

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #include <stdio.h>
    #include <stdlib.h>
    int main(int argc,char* argv[])
    {
      int i;
     for (i = 1; i < argc; i++)
      {
        printf ("\n Lancement du programme %s\n\n",argv[i]);
        system(argv[i]);
      }
      return (0);
    }
    Code non teste, mais il devrait fonctionner.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Citation Envoyé par fenrir Voir le message
    Dans le code fourni, i n'est pas initialisé, (i==1) vaut donc 0.
    Petite précision: La valeur de i est inconnue à ce stade. Il aurait pu très bien valoir 42678 et on aurait très bien pu avoir aucun affichage. Par chance nous avons des systèmes relativement "propre", ou tout simplement, nous tombons sur de la mémoire, su laquelle il y avait un 0 sur cet emplacement, alors notre i sera 0. Mais ce n'est qu'un coup de chance (et souvent en optimisant ( par le compilateur ) cette chance diminue )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

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

Discussions similaires

  1. Execution d'une commande telnet dans un script sh
    Par Nospher dans le forum Linux
    Réponses: 17
    Dernier message: 23/08/2011, 15h30
  2. [Système]Execution d'une commande shell
    Par n8ken dans le forum API standards et tierces
    Réponses: 24
    Dernier message: 29/03/2007, 04h36
  3. Execution d'une commande Shell Unix
    Par boubakary dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 17/06/2006, 20h36
  4. Execution d'une commande systeme enC?
    Par must19 dans le forum Linux
    Réponses: 4
    Dernier message: 12/04/2006, 19h08
  5. [System][EXEC] Probleme d'execution avec une commande parametrée.
    Par chicorico dans le forum Général Java
    Réponses: 15
    Dernier message: 20/05/2005, 15h07

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