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