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 :

System() et gcc


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut System() et gcc
    Bonjour/soir,

    J'ai trois fichier .o dans mon dossier avec lesquels je veux creer un fichier exectutable f.

    Alors j'execute la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o f -g f.o f1.o f2.o
    le fichier f est automatiquement cree et apparait dans mon dossier.

    Maintenant je veux compiler la commande avec mon programme avec system().

    alors je construit mon beau string avec ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf(syscommand, "gcc -o %s %s%s", execfile, allflags_exec, ofilelist);
    je verifie le contenu:

    j'obtiens:

    gcc -o f -g f.o f1.o f2.o
    en tant que string, donc ca marche bien ?

    Mais quand je veux passer le string vers la fonction system() en faisant

    j'ai la mauvaise surprise :

    gcc: f.o: No such file or directory
    Alors que ce fichier est bel et bien present dans mon dossier.

    Des idees?

  2. #2
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Affiche ton répertoire de travail avec getcwd(), je pense que tu auras des surprises.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Affiche ton répertoire de travail avec getcwd(), je pense que tu auras des surprises.
    Tu peux expliquer d'avantage comment utiliser cette fonction ?

    Merci

  4. #4
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015

  5. #5
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 201
    Par défaut
    Ce n'est pas une solution.


    Je vois pas en quoi afficher mon repertoire va me surprendre, je ne travail que un seul repertoire, et cette fonction getcwd ne m'a renseigne que sur ce que je savais deja.

  6. #6
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Quel est ton système?

  7. #7
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    Quel est le statut de retour de system?

    La page de man de system() me laisse à penser qu'il y'a quelques contraintes d'environnement à respecter.

    tu peux éventuellement remplacer system() par popen() pour pouvoir contrôler les E/S de tes commandes et vérifier que cela se passe comme tu le souhaite.


    exemple d'utilisation de popen choppé sur le net.
    http://tldp.org/LDP/lpg/node12.html
    As another example of popen(), consider this small program, which opens up two pipes (one to the ls command, the other to sort):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
     
     
    /*****************************************************************************
     Excerpt from "Linux Programmer's Guide - Chapter 6"
     (C)opyright 1994-1995, Scott Burkett
     ***************************************************************************** 
     MODULE: popen2.c
     *****************************************************************************/
     
    #include <stdio.h>
     
    int main(void)
    {
            FILE *pipein_fp, *pipeout_fp;
            char readbuf[80];
     
            /* Create one way pipe line with call to popen() */
            if (( pipein_fp = popen("ls", "r")) == NULL)
            {
                    perror("popen");
                    exit(1);
            }
     
            /* Create one way pipe line with call to popen() */
            if (( pipeout_fp = popen("sort", "w")) == NULL)
            {
                    perror("popen");
                    exit(1);
            }
     
            /* Processing loop */
            while(fgets(readbuf, 80, pipein_fp))
                    fputs(readbuf, pipeout_fp);
     
            /* Close the pipes */
            pclose(pipein_fp);
            pclose(pipeout_fp);
     
            return(0);
    }

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/01/2007, 13h47
  2. Test du systeme - utilisation de -D de gcc
    Par Toutankharton dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 14/12/2006, 23h33
  3. [VB6] [Système] Récupérer le contenu d'une fenêtre DOS
    Par Nounours666 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 18/11/2004, 16h38
  4. [TP7]systeme d'exploitation
    Par numeror dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 15/08/2002, 08h47
  5. [Kylix] gcc et kylix
    Par alexsmadja dans le forum EDI
    Réponses: 1
    Dernier message: 28/05/2002, 10h00

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