stdin, stdout, stderr
SZIGETI Szabolcs
szigi at ik.bme.hu
Tue Apr 19 15:03:21 CEST 2005
Hali!
>>
>> Legyunk pontosak: az integeres file handle, az nem C specifikus, hanem
> Unix
>
> Nem ANSI C specifikus?!
> Bevettek a szabvanyba tudtommal...
Lehetseges, nem tudom. De az biztos, hogy Unix eredetu volt. Az sdtio-t meg
azert talaltak ki, hogy nem unixon islegyen szabvany C io konyvtar, olyan
gepen is, ahol akar nincs is byte-folyam jellegu IO.
>
>> Alapvetoen egeszsegtelen dolog az stdio es az oprendszer szintu
> fajlekezelo
>> eljarasokat keverni, mert rengeteg buktato van benne. Ha van rendes stdio
>> implementaciod, akkor hasznald kizarolag azt. Ha nincs, akkor marad az
>> oprendszer szint.
>
> ? nemertem.
Ugy ertem, a sima read/write/open/close.
>
> Epp az van hogy nincs oprendszer (ez egy microcontrolller) es en akarom
> megirni a filekezelest.
> De nemtom hogy az oprendszerben hogyan irjak meg.
> Azaz a FILE strukturabol+stream-bol hogy lesz tenyleges file?!
Amikor fopen-nel megynitsz egy filet, akkor az stdio konyvtar meghivja az
alatta levo open-t. Es elrakja a FILE-ban a descriptort. Egyes
implementaciok a fileno(FILE*) hivassal meg tudjak mondani, hogy melyik az.
De hivatalosan a FILE* alral mutatott strukturanak a belso felepiteset nem
lenne "szabad" ismerni, mert az nem garantaltan hordozhato.
> Pl az fopen parancs hatasara letrejon a file.
> Van valami flag a strukturaban ami jezi hogy most jott letre, es mondjuk
q> megcsinalhatom hozza a FAT bejegyzest, majd torolhetem a flag-et.
> Aztan szepen lehet irogatni, es az fclose-nal pedig lezarni, es voila kesz
> a
> file.
Az stdio az egy folsobb szintu reteg. Az alatta levo rendszerhivasokra epul.
Tehat meghivod az fopen-t, az pedig meg fogja hivni az open-t, vagy akarmi
is van alatta. Vagy letrehozol valahogy egy filedescrptort, es fdopen-nel
csinalsz belole egy FILE-t.
> Tovabba honnan tudom hogy a mondjuk 5-os handle-hoz melyik file struktura
> tartozik?
Egyatalan nem biztos, hogy tartozik hozza! A legtobb megvalositasban a FILE
dolgai sima konyvtari fuggvenyek, amely hozza vannak linkelve az
alkalmazashoz. Az stdion/out/err-nek csak azert van, mert a main meghivasa
elott inicializalo kod letrehozza oket. A tudtodon kivul mas FILE nem johet
letre. De hamegvan a handle-d, akkor vagy kezeled azt direktben
read/write-tal, vagy, ahogy mondtam, fdopennel csinalsz hozza FILE-t.
Szabolcs
More information about the Elektro
mailing list