Programmation Système Linux [Résolu]

Signaler
Messages postés
5
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2004
-
Messages postés
241
Date d'inscription
mardi 29 octobre 2002
Statut
Membre
Dernière intervention
23 janvier 2006
-
Bonjour bonjour.
Je souhaitais simplement demander si il est possible (je pense lol) de copier le résultat de l'execution de commande sur la sortie standard dans un fichier depuis un programme ( copier pas rediriger lol ).

Je m'explique : j'ai un petit programme qui récupère des commandes systèmes écrites dans un mail, je fais tout plein d' execvp et donc le résultat s'affiche sur la sortie standard ( normal me direz vous ).
Et j'aurai besoin d'avoir une copie de ce resultat dans un fichier.
J'y arrive en redirigeant la sortie standard dans un fichier à l'aide d'un "dup2", mais du coup j'ai plus rien sur la dite sortie.Voilà si qq'un connait le pb et a une solution ou une idée je serai grandement reconnaissant.

4 réponses

Messages postés
232
Date d'inscription
vendredi 9 janvier 2004
Statut
Membre
Dernière intervention
8 janvier 2005

Salut,

plus simple, moins ambitieux, utiliser la commande tee :
$ ls | tee ls.txt
affiche le résultat de ls sur la sortie standard, et dans le fichier ls.txt
$ ps | tee -a ls.txt
affiche le résultat de ps sur la sortie standard, et à la fin du fichier ls.txt (option -a)
Messages postés
241
Date d'inscription
mardi 29 octobre 2002
Statut
Membre
Dernière intervention
23 janvier 2006

Si je me souviens bien (ca fait longtemps que je n ai pas fait ce genre de code), la solution est de creer un pipe (ou tube en bon francais), de faire un fork() et dans le processus fils dont on a remplace l'entree et la sortie standard par les extremites du pipe executer le programme par exexvp() par exemple.

Ceci permet de controler l entree et la sortie standard d un programme, ce qui peut etre utile pour mettre en place un systeme de plugins. Mais dans ton cas ca te permet d avoir un controle sur la sortie standard et donc de l ecrire dans un fichier ET de l ecrire sur le terminal.

Il y a peut etre plus simple mais cette methode fonctionne.
Messages postés
5
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2004

Merci bcp.Pour la méthode avec le pipe, j'ai essayé mais le pb c'est que je n'arrive pas à avoir les deux en même temps(affichage + écriture dans un fichier).Mais je vais continuer à chercher merci.
Sinon avec la commande tee ca marche, c'est pas exactement comme je l'aurai imaginé mais cela fonctionne et ca mise en place dans le programme n'est pas ( trop :) ) complexe.
Merci bcp à vous pour vos conseils.
Messages postés
241
Date d'inscription
mardi 29 octobre 2002
Statut
Membre
Dernière intervention
23 janvier 2006

A je ne connaissait pas cette commande. Comme quoi, on en apprend tout les jours (je suis tres loin d etre un pro du shell...). :)