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 :

[C] Changer le descripteur d'un binaire qui s'execute avec execve()


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 13
    Par défaut [C] Changer le descripteur d'un binaire qui s'execute avec execve()
    Bonjours,
    Dans le but d'un projet, nous devons réaliser un mini-shell.
    Nous voulons faires les redirections ">" et "<", qui change la sortie standard <stdin> vers un filedescriptor pour ecrire le résultat de "ls" (executer avec execve(char *link, char **flag, char **environ)) dans un fichier par exemple. Mais je sais pas comment je pourrais faire cela. Quelqun aurait une idée?

    Merci!

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Est ce que quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    freopen("redirection.stdout.txt", "w", stdout);
    freopen("redirection.stdion.txt", "r", stdin);
     
    execve(...);
     
    freopen("/dev/tty", "w", stdout);
    freopen("/dev/tty", "r", stdin);

    Peut faire l'affaire ?

    Attention, les deux dernières lignes sont très dépendantes du système sous-jacent...

    On aurai aussi pu écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    freopen("/dev/stdout", "w", stdout);
    freopen("/dev/stdin", "r", stdin);
    ou (pour windows)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    freopen("CON", "w", stdout);
    freopen("CON", "r", stdin);

  3. #3
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Renseignes toi sur freopen()
    Par exemple pour rediriger la sortie standard vers un fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    freopen("fichier.txt", "w", stdout);

  4. #4
    Invité
    Invité(e)
    Par défaut
    Regarde le cours sur les pipes dans l'intra! Et les man de dup et dup2

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/01/2011, 00h48
  2. Réponses: 3
    Dernier message: 06/12/2010, 15h59
  3. Réponses: 9
    Dernier message: 20/03/2009, 08h34
  4. Réponses: 1
    Dernier message: 13/05/2007, 13h25
  5. Changer un string dans un binaire
    Par aymanouch dans le forum Linux
    Réponses: 5
    Dernier message: 20/10/2006, 11h13

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