question tres conne mais je vois pas la :/

question tres conne mais je vois pas la :/ - C++ - Programmation

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]
Reply

Marsh Posté le 28-12-2002 à 17:30:41   

Reply

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 :o

Reply

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 !
 
 Si tu fais un fd = fopen("monfichier","w+" );
 
tu fais un write(fd, var1,1) ça devrait aller :o


 
hu
c quoi la fd pour la sortie standard ? le shell


Message édité par Nokbilong le 28-12-2002 à 17:40:18

---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 28-12-2002 à 17:41:29    

Nokbilong a écrit :


 
hu
c quoi la fd pour la sortie standard ? le shell


 
T'as essayé un stdin ou &stdin un truc comme ça ?  
 
Faut inclure stdio.h avant

Reply

Marsh Posté le 28-12-2002 à 17:43:11    

samuelp a écrit :


 
T'as essayé un stdin ou &stdin un truc comme ça ?  
 
Faut inclure stdio.h avant


 
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
int   main()
{
  char grr;
  grr = 'a';
 
  write(1, &grr, 1);
}
(nk@lta)gcc chelou.c -o hu
(nk@lta)./hu
a(nk@lta)


 
:/
 
bon vé test avec stdio.h


Message édité par Nokbilong le 28-12-2002 à 17:52:16

---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 28-12-2002 à 18:04:13    

avec le header et write(stdout ...
 
ca change rien :/


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

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

Reply

Marsh Posté le 28-12-2002 à 20:48:31    

HappyHarry a écrit :

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


 
 
ouai mais en fait j'aimerai utiliser write :)
 
je sais char par char c lent et ca sert a rien :p
 
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 :o


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

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 :/


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

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 !
 
 Si tu fais un fd = fopen("monfichier","w+" );
 
tu fais un write(fd, var1,1) ça devrait aller :o


 
 
n'importe quoi  :whistle: , 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).


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 29-12-2002 à 15:14:34   

Reply

Marsh Posté le 29-12-2002 à 15:20:06    

schnapsmann a écrit :


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).  


 
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 ?
 


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 29-12-2002 à 15:22:36    

Nokbilong a écrit :

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?


 
je me rappelle ca y est  :D  
 
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.


Message édité par schnapsmann le 29-12-2002 à 15:23:56

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 29-12-2002 à 15:28:59    

schnapsmann a écrit :


 
je me rappelle ca y est  :D  
 
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.


 
ok thx
vé test ca


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Marsh Posté le 29-12-2002 à 15:35:30    

schnapsmann a écrit :


 
je me rappelle ca y est  :D  
 
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.


 
oué bon j'ai deja dit ... il peut faire un fflush aussi ...

Reply

Marsh Posté le 29-12-2002 à 15:38:53    

HappyHarry a écrit :


 
oué bon j'ai deja dit ... il peut faire un fflush aussi ...


 
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.


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 29-12-2002 à 16:00:35    

HappyHarry a écrit :

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


 
 
 
j'avais pas vu :D


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

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.


---------------
"-Dites 33. -Export!!" [:nokbilong]
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed