Sujet: Re: caractère de fin de fichier windows vs linux
De: schwarz.ben (l' arobase) gmail.com (meow)
Groupes: fr.comp.lang.tcl
Organisation: http://groups.google.com
Date: 04. Sep 2008, 11:42:52
la commande eof est parfaitement fonctionnelle sous XP comme sous Unix.
C'est peut etre la réponse mais je crois bien que c'était pas la
question :)
Je m'explique : Si je ne m'abuse, la commande eof permet de savoir si
on est en fin de fichier en *lecture*. Moi mon soucis, c'est
d'*écrire* un caractère de fin de fichier sur un flux.
Rappel du problème :
J'ai un exec windows (ou linux) en C++ dans lequel je lis des lignes
sur un flux en entrée, puis quand le fichier est fini j'écris des
trucs sur un flux de sortie. En l'occurrence, mes flux sont stdin et
stdout.
while (cin>>blah)
{ do something }
cout << blih
Appelons cet executable pipo.exe
Je peux ainsi (sous linux comme sous l'émulateur dos) faire un
pipo.exe < fichier_in > fichier_out et tout il marche bien...
A côté de ça j'ai un script foo.tcl dans lequel je fais un
set id [open "| pipo.exe" w+]
puts $id destrucs
puts $id $eof_char
gets $id fileline
où eof_char vaut \032 ( j'ai aussi essayé d'autres valeurs trouvées
sur le net : \1x \1u00a,...)
Sous linux pas de soucis, mais sous windows foo.tcl coince sur le
gets... En fait, ça se passe au niveau du C++ qui reste bloqué sur le
while : il ne "comprend pas" que le "fichier" il est fini. Mais à ce
qu'il m'a semblé comprendre c'est un problème insoluble, qui n'est pas
lié à tcl mais à la gestion des fichiers sous windos : pas de
caractère de fin de fichier.