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

POSIX C Discussion :

Fonction exec redirection vers fichier


Sujet :

POSIX C

  1. #1
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut Fonction exec redirection vers fichier
    Bonjour,

    Je ne vois pas comment utiliser la fonction exec , execvp etc


    La seule chose que je voudrais, c'est rediriger vers un fichier par exemple le résultat.


    La commande system(concatener_chaine("mkdir ",fichier)); n'est pas la syntaxe idéale. Je préfère me pencher sur les syntaxes exec.
    Vous vous avez un exemple à me montrer, n'hesiter pas. (autre que ls, parce que je ne comprends pas trop.

    Merci
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Si c'est la commande pour créer un dossier, je te conseille d'utiliser l'appel système mkdir (man 2 mkdir).

  3. #3
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    comme ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char *parms[] = {"cat","monfichier",NULL};
    execv (parms[0], parms);
    -edit: erreur corrigée-
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  4. #4
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    Mon objectif, c'est afficher le resultat dans un fichier avec l'aide de la fonction exec comme par exemple en passant en argument une commande md5 me fourni un resultat : serie de chiffre et de lettre md5, nom de fichier ainsi que la date de modification/creation
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

  5. #5
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    Dark_Ebola, t'es sur que le code est correct???

    parce que n'arrive pas a compiler, je suis sous unix


    Merci. Autrement, comment effectuer ">" pour affectuer le resultat dans un fichier avec dup et dup2???(je suppose que c'est la seule solution dans utiliser la commande system() et en utilisant exec* à tout prix...
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

  6. #6
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    petite erreur de ma part

    ebola@gentoo ~ $ cat exec.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
     
    int
    main ()
    {
     
      char *parms[] = { "/usr/bin/xmms2", "next", NULL };
      execv (parms[0], parms);
      perror ("execv");
      return EXIT_FAILURE;
    }
    ebola@gentoo ~ $ gcc -Wall -o exec exec.c
    ebola@gentoo ~ $ ./exec

    ça marche. (j'entend par la, que j'entend que ça marche, si vous me suivez )

    -edit: mujgika : avec le const c'est mieux ? j'ai un warning moi -
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par wkd
    Dark_Ebola, t'es sur que le code est correct???

    parce que n'arrive pas a compiler, je suis sous unix


    Merci. Autrement, comment effectuer ">" pour affectuer le resultat dans un fichier avec dup et dup2???(je suppose que c'est la seule solution dans utiliser la commande system() et en utilisant exec* à tout prix...
    Dark_Ebola a sans doutes voulu écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char const * parms[] = {"cat", "monfichier", NULL};
    execv (parms[0], parms);
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char parms[][] = {"cat","monfichier",NULL};
    execv (parms[0], parms);
    EDIT: Désolé Dark_Ebola, j'avais pas vu ta correction... gcc me donne un avertissement si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char * parms[] = {"cat", "monfichier", NULL};
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char const * parms[] = {"cat", "monfichier", NULL};
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  8. #8
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    bonsoir,


    j'ai toujours la meme erreur que ce soit avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char **parms= {"cat","monfichier",NULL};
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char const **parms= {"cat","monfichier",NULL};
    il me mets qu'ils y un erreur :
    partie1.c:459: warning: passing argument 2 of 'execv' from incompatible pointer type


    "monfichier" est de type char * ?


    Comment se fait-il??? je n'ai toujours pas reussi à utliser execv :/
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

  9. #9
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    C'est pas ce qui a été donné comme solution plus haut...C'est un tableau de chaines de caractère dont tu as besoin.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  10. #10
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par wkd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char **parms= {"cat","monfichier",NULL};
    Attention,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char **parms= {"cat","monfichier",NULL};
    n'est pas équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *parms[] = {"cat","monfichier",NULL};
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  11. #11
    wkd
    wkd est déconnecté
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 112
    Points : 65
    Points
    65
    Par défaut
    ok, ca a marché, mais maintenant, comment affecter le contenu dans un fichier texte suite à un appel de programme lancé via execv?
    Le forum est là pour ceux qui ont déjà passé des heures et des heures à chercher la petite bête et qui n'ont pas encore trouvé le moyen de l'attraper...

Discussions similaires

  1. redirection vers fichier local
    Par dattebayo dans le forum Langages serveur
    Réponses: 0
    Dernier message: 15/09/2013, 20h50
  2. [PHP 4] redirection vers fichier php
    Par lapinou8430 dans le forum Langage
    Réponses: 5
    Dernier message: 15/02/2009, 12h07
  3. Redirection vers fichier erreur javac
    Par XtraDelirium dans le forum Langage
    Réponses: 7
    Dernier message: 23/02/2007, 20h51
  4. Réponses: 3
    Dernier message: 10/08/2006, 20h04
  5. probleme redirection dup2 vers fichier
    Par gee_brice dans le forum C
    Réponses: 3
    Dernier message: 03/03/2006, 20h08

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