stdin, stdout, stderr
Fuzesi Arnold
arno at externet.hu
Tue Apr 19 03:53:29 CEST 2005
Szia!
----- Original Message -----
From: "Andras Tantos" <andras_tantos at yahoo.com>
To: <avr-hun at x-dsl.hu>; <elektro at tesla.hu>; <retro at lists.tmp.hu>
Sent: Monday, April 18, 2005 5:08 PM
Subject: Re: stdin, stdout, stderr
> Hali!
>
> A C-ben ket fele fajlkezeles van. Az egyik file handle-el mukodik. Ezeken
> mukodnek az open, close, stb. fugvenyek. A 'handle' valoban egy integer,
es
> elvben az open adja vissza oket. Minden megnyitott fajlnak egyedi
handle-je
> van, azonban a std. I/O-nak elore lefoglalt, speci handle-t adtak:
>
> 0 - STDIN
> 1 - STDOUT
> 2 - STDERR
> 3 - STDAUX (?)
Idokozben kiprobaltam...
Egybevag a fentivel.
Stdaux nincs, viszont 4-tol osztja ki a FILE handle-kat ezekszerint nagyon
helyesen. (gondolom szabvany miatt...)
> Van egy masik tipusu fajlkezeles, amelyik FILE* struktura pointer-eket
> hasznal. Ez a tipusu kezeles az, amelyiket az fopen, fclose, stb., tehat
az
> 'f' kezdetuek ismernek. Itt a FILE valoban egy struktura. Ezekbol is van
par
A file es az std kozott az-e a lenyegi kulonbseg hogy:
-az std egy buta stream alapvetoen (nem tudok pozicionalni, attributum elore
rogzitett (rd, wr))?
-a file meg egy blokkos valami joszag amiben tudok maszkalni tetszes
szerint, irhatom is, olvashatom is, stb.?! Es az attributumokat (poz, r, w,
stb) maga a FILE struktura tartalmazza?! Plussz meg buffert is
deklaralhatok hozza, igy nem kell minden byte-nal az adott eszkozhoz
fordulni. (legyen ez egy eeprom jelen esetben. Ennel kifejezetten jol jonne
ez. Jol gondolkodom?)
> elore defnialt: stdin, stout, stderr, stdaux. A FILE*-on operalo
fuggvenyek
> altalaban elobb-utobb visszahivjak a file-handlet kezeloket, ezert is van
a
Ezt nem ertem.... :(
> FILE strukturaban egy handle. Amit hozza szoktak rakni, az pl. a
buffereles.
Ez a setbuf, setvbuf? Mindketto ures fuggveny nalam. Ahogy nezegettem neten
egy malloc foglal bennuk jo esetben helyet, vagy at kell adni a "kinn"
deklaralt buffer cimet. Jol vettem ki?
Erre gondolok:
http://www.koders.com/c/fid12C383264B447AAEBB426617E110F020843521CD.aspx
http://www.koders.com/c/fid698CDD08A647BF6953798C88B13C038289F94ABA.aspx
Teljesen ertelmesnek tunik a mukodese ennek a fentinek. Ha bufferelt modot
akarok (_IOLBF || _IOFBF) akkor szepen allokal memoriat ha nem volt buffer
megadva neki. Ha volt akkor azt hasznalja. Jol vettem ki?
> A te uC-den a megvalositas elegge primitvnek tunik: csak az elso harom
std.
> handle-t kezeli. Azaz nincs valodi fajlrendszer, es (gondolom) a
fuggvenyek
> csupan a soros port kezeleset csomagoljak egy a szabvanyhoz kicsit
kozelebb
> allo formaba.
>
> Osszefoglalva: fopen, fclose, open, close, fseek, fpos, ungetc - felejtsd
> el, nem fognak mukodni.
Ami erdekes:
Ha nyitok egy file-t, akkor a handle-ja 4-es lesz es a writechar szepen
dobalja ki a karaktereket. (ugyan ugy mint a printf eseten)
Eddig ugyvelem rendben.
Viszont a bufferelt tortenet gondolom a fenti okbol nem megy. (ures a
setbuf, setvbuf)
char buf[BUFSIZ];
FILE *in, *out;
int key;
out = fopen("copy.txt", "rw");
setbuf(out, buf);
printf("Hello, world!\n");
while(key<12){
fputc(key++, out);
}
fclose(out);
Szepen kinyomta a hello world, majd a 11 karaktert.
Ezen febuzdulva probaltam egy buffert rendelni hozza. Merthogy ugy lenne
"fasza" a dolog...
Majd mikor minden probalkozasom ellenere a set(v)buf nullat adott vissza
akkor megkerestem a forrasat hogy vajon mi a francert teszi ezt. Aztan
kiderult mert tok uresek... :(
Megvalami:
Ha netan megy a file kezeles (ugygondolom elofordulhat a fentiek utan),
akkor hogyan is kellene azt lekezelni?
Vagy ha itt epp nem megy, de mashol maskor...
Amire gondolok:
A writechar az a fuggveny amelyik dobalja ki a karaktereket az egesz maszlag
vegen.
A handle megadja melyik stream-rol, file-rol is van szo.
Ide (writechar-ba) kellene beirnom egy olyan reszt amelyik pl:
if(4==handle){
akkor valahogy eloszedi a 4-es handlehoz tartozo file strukturat, es
kinyeri belole a poziciot, attributumot (r,w,txt,bin stb), es megcsinalja
amit megkell.
Ha igy van akkor kb hogyan kell ezt a strukturat eloszedni?! Otletem sincs
visszafele hogyan "cimezhetem" a handle alapjan a file strukturat. )
Feltve ha lehet file-okkal bohockodni...
A file strukturabol gondolod hogy nem lehet file-okkal dolgozni?
Amit talaltam abban valoban nincs sem poz, sem semmi. Viszont csomo minden
meg megvan forrasban.
fseek stb.
}
Nagyon köszönöm!!!
Arnold
More information about the Elektro
mailing list