Si je fais close(STDOUT_FILENO) pour par exemple rediriger la sortie standard vers un fichier, comment dois-je faire si je veux réouvrir par la suite la sortie STDOUT_FILENO? En utilisant la primitive open?
Si je fais close(STDOUT_FILENO) pour par exemple rediriger la sortie standard vers un fichier, comment dois-je faire si je veux réouvrir par la suite la sortie STDOUT_FILENO? En utilisant la primitive open?
Avec freopen
FILE* freopen(const char* f, const char* m, FILE *pf)
Par exemple:
freopen("entree", "r", stdin);
freopen("sortie", "a", stdout);
freopen("erreur", "a", stderr);
Ah ? Tu crois que ton système comprends "entree" comme le nom du périphérique attaché à stdin ?Envoyé par v4np13
Pour faire çà il faut connaitre le vrai nom. Sous DOS/Windows, c'est "CON" (console) pour stdin et stdout. Pour stderr, et pour d'autres systèmes, je ne sais pas.
Sous Linux, tu peux essayer:Envoyé par v4np13
Mais comme tu n'a pas précisé ton système, difficile pour nous de le deviner. Donne plus de précisions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 freopen("/dev/stdin", "r", stdin); freopen("/dev/stdout", "a", stdout); freopen("/dev/stderr", "a", stderr);
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++
+
Je crois que c'est /dev/tty sous unixoïde...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Je programme sous Linux.Envoyé par mujigka
Merci beaucoup pour vos réponses!
Désolé pour la question débile, mais je ne sais pas que c'est exactement un système unixoïde.Envoyé par Médinoc
Un systeme unixoïde, c´est un systeme qui a comme base unix (LINUX (ubuntu,fedora,...), MacOSX,...). Donc, si t'as un windows t'es pas concerné.
Hum, GNU/Linux (Rappel : GNU is Not Unix) n'a pas pour 'base' Unix. C'est un système qui a été écrit de zéro (from scratch), sur des bases nouvelles, mais en utilisant une interface système et un mode commande identique à Unix (Ou plus exactement à POSIX, pour rester neutre).Envoyé par v4np13
MacOSX est basé sur FreeBSD qui est un autre clone de Unix, mais n'est pas non plus Unix. Solaris est un Unix.
Partager