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

  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 : 39
    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-

  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

  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...

  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 -

  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

  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 :/

  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 723
    Points
    5 723
    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.

  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

  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?

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