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?
Version imprimable
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 ?Citation:
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:Citation:
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:
1
2
3 freopen("/dev/stdin", "r", stdin); freopen("/dev/stdout", "a", stdout); freopen("/dev/stderr", "a", stderr);
Thierry
Je crois que c'est /dev/tty sous unixoïde...
Je programme sous Linux.Citation:
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.Citation:
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).Citation:
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.