question tres conne mais je vois pas la :/ - C++ - Programmation
Marsh Posté le 28-12-2002 à 17:36:12
Pour quoi 1 au debut ? C'est un File Descriptor pour les fichier !
Si tu fais un fd = fopen("monfichier","w+" );
tu fais un write(fd, var1,1) ça devrait aller
Marsh Posté le 28-12-2002 à 17:40:02
samuelp a écrit : Pour quoi 1 au debut ? C'est un File Descriptor pour les fichier ! |
hu
c quoi la fd pour la sortie standard ? le shell
Marsh Posté le 28-12-2002 à 17:41:29
Nokbilong a écrit : |
T'as essayé un stdin ou &stdin un truc comme ça ?
Faut inclure stdio.h avant
Marsh Posté le 28-12-2002 à 17:43:11
samuelp a écrit : |
vais test
sur le netbsd ou je codais j'ai tjs fait write(1 ... ca marchait
sans inclure d'header
je capte plus la
sur un netbsd :
(nk@lta)cat chelou.c |
bon vé test avec stdio.h
Marsh Posté le 28-12-2002 à 18:04:13
avec le header et write(stdout ...
ca change rien
Marsh Posté le 28-12-2002 à 19:11:05
fflush(1) et tu verras que ca marche tout de suite mieux
il me semble que l'affiche sur la sortie standard est bufferisée, ca n'est affiché que quand on arrive sur un caractere fin de ligne \n
autre solution : virer la bufferisation, mais ca je me souviens plus du nom de la fonction
Marsh Posté le 28-12-2002 à 20:48:31
HappyHarry a écrit : fflush(1) et tu verras que ca marche tout de suite mieux |
ouai mais en fait j'aimerai utiliser write
je sais char par char c lent et ca sert a rien
mais c pour mes cours en fait
je ml'etait dis je vais refaire ce que j'ai fait cette année, je commence par le debut, un putchar avec write
pouf ca marche pas
vu que je peux pas bosser je vais devoir aller boire
Marsh Posté le 29-12-2002 à 14:52:43
pas d'autres idées ?
ca doit etre un truc tout con mais je vois pas ...
le meme code marche sur un netbsd et write queud sur un freebsd
Marsh Posté le 29-12-2002 à 15:14:34
samuelp a écrit : Pour quoi 1 au debut ? C'est un File Descriptor pour les fichier ! |
n'importe quoi , mélanger les FILE* retournés par fopen pour les utiliser avec write...
Pour ce qui est du 1: un process posix ouvre 3 toujours trois fichiers: entrée standard, sortie standard, sortie erreur; dans l'ordre ca donne 0(std in),1(std out) et 2(std err).
Marsh Posté le 29-12-2002 à 15:20:06
schnapsmann a écrit : |
ouai mais donc si je write sur 1 ca devrai m'afficher kk chose
mon write et bon mais ca marche pas
c mon freebsd qui trip ?
Marsh Posté le 29-12-2002 à 15:22:36
Nokbilong a écrit : char var = 'a'; |
je me rappelle ca y est
La sortie standard est bufferisée, il faut écrire suffisament d'octets dessus (sans doute 512 cf le #define BUFSIZ) pour quelle soit "flushée". Sinon tu peux écrire un retour chariot ca devrait flusher immédiatement (là j'ai un doute).
essaye avec write(2 ... sur la sortie erreur il n'y a pas de buffer ca devrait marcher.
Marsh Posté le 29-12-2002 à 15:28:59
schnapsmann a écrit : |
ok thx
vé test ca
Marsh Posté le 29-12-2002 à 15:35:30
schnapsmann a écrit : |
oué bon j'ai deja dit ... il peut faire un fflush aussi ...
Marsh Posté le 29-12-2002 à 15:38:53
HappyHarry a écrit : |
oué bon javé pas vu
pour virer la bufferisation il faut utiliser fcntl; mais alors bon courage pour la manpage de fcntl, elle est généralement toute cracra et regorge de trucs zarbis; rien d'impossible à comprendre néanmoins.
Marsh Posté le 29-12-2002 à 16:00:35
HappyHarry a écrit : fflush(1) et tu verras que ca marche tout de suite mieux |
j'avais pas vu
Marsh Posté le 29-12-2002 à 16:02:52
au passage la sortie d'erreur semble bufurisée aussi
et si je write un \n c marche
bon
bah je vais lire la doc de fcntl
thx tlm.
Marsh Posté le 28-12-2002 à 17:30:41
char var = 'a';
write(1, &var, 1);
et ca write rien
comme si c'etait pas 1 ld fd de la sortie std
mais j'ai rien touché
c sous un freebsd
kk1 a une idée?
---------------
"-Dites 33. -Export!!" [:nokbilong]