stdin, stdout, stderr
Andras Tantos
andras_tantos at yahoo.com
Tue Apr 19 20:20:59 CEST 2005
Hali!
>
>> 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.
Azt hiszem nem egeszen a kerdesre valaszoltal. Ha jol ertem Arnold
problemajat, o pont azokat a fuggvenyeket szeretne megirni, amiket te
hasznalni ajanlasz.
Azt hiszem, hogy a valasz a kerdesre ez: nem lehet megmondani. A FILE
struktura es a file handle ket kulon fogalom. Az atjaras az egyik iranyba
egyszeru (FILE -> handle) a masik iranyba viszont nem lehetseges. Ez amugy a
konyvtarak reteges felepitesebol kovetkezik. Az fopen elkesziti a FILE
strukturat, megnyitja a fajlt az open, vagy valami hasonlo alacsonyabb
szintu hivas segitsegevel (es ez altal allokal egy ervenyes handle-t), ezt
beletuzi a FILE struktura egyik mezojebe, majd visszater. Az osszes tobbi
hivas, ha a fizikai fajlhoz akar hozzaferni (ez a buffereles miatt nem
biztos hogy minden hivasnal szukseges), akkor meghiv valami alacsonyabb
szintu kezelo fuggvenyt, aminek csak a file handle-t adja at.
Ha ezeket az alacsonyabb szintu fuggvenyeket akarod megirni, akkor nem
tetelezheted fel, hogy van egy FILE struktura valahol, amelyik tartalmazza a
szukseges paramtereket. Ha tudnod kell bizonyos informaciokat (current
location, current sector, FAT entry, mit tudom en), ezeket magadnak kell
adminisztralni. Leven a file handle-t te allokalod, ezert a legyegyszerubb
megoldas egy fix tomb a sajat leiro-strukturaidbol. Ha kernek toled egy uj
fajl handle-t, keresel a tombben egy szabad bejegyzest, inicializalod azt,
majd vissza adod az index-et (illetve+5-ot), mint handle-t. A tovabbi
hivasok soran egy egyszeru index-eles a tombbe es mar meg is van az info,
amit keresel. A close hivas pedig atir valami flag-et a strukturaban, amitol
az megint szabad lesz. Mindez eleg jol mukodik, amig biztosan tudod, hogy
max. hany fajl lehet egyszerre nyitva. Ha ezt nem tudod, akkor
komplikaltabb, dinamikus strukturakat kell alkalmazni, de a legvaloszinubb,
hogy erre nem lesz szukseged.
Segitettem, vagy en is felre ertettem a problemat?
Tantos Andras
More information about the Elektro
mailing list