Bonjour,
dans le cadre de réalisation d'un mini shell, je dois pouvoir modifier le descripteur de la sortie, erreur et entrée standard.
Mon problème est identique dans les trois cas. Prenons par exemple la sortie standard. J'arrive à la redirigier, mais une fois mon traitement achevé, comment la refaire aller sur l'écran ?
J'ai trouvé un code classique pour la rediriger :
Code :
- int fdesc; /* descripteur d'entrée/sorties pour les redirections */
- int result; /* résultat pour la duplication des E/S */
- fdesc = open("FichierPourLaSortie", O_CREAT | O_TRUNC | O_WRONLY, 0644);
- result = dup2(fdesc, STDOUT_FILENO); /* modifie la sortie standard */
- if(result < 0) {
- fprintf(stderr, "erreur lors de la redirection de stdout. Arrêt de la commande.\n" );
- return -1;
- }
- close(fdesc); /* ferme le descripteur inutilisé */
- /* ici je peux m'amuser à écrire dans FichierPourLaSortie */
- /* une fois mon traitement terminé, comment retrouvé stdout sur l'écran ?? */
- fflush(NULL);
|
Message édité par abaddon2002 le 04-03-2008 à 22:40:33