[so] [Tema 2] [Linux] Lămuriri enunț

Adrian Șendroiu molecula2788 at gmail.com
Wed Mar 20 17:40:50 EET 2019


Salut,

> Salutare,
>
> Am și eu câteva nelămuriri în legătură cu enunțul temei, după cum urmează:
>
> - so_fopen are modurile de deschidere a fișierului primite ca argument, pentru implementarea pe Windows am văzut la 'Precizări Windows' faptul că trebuie să deschidem fișierele cu GENERIC_READ|GENERIC_WRITE. Trebuie ignorat modul primit ca argument legat de partea aceasta de scriere și citire (aici nu intră side-effects, trunchiere etc)

Tot comportamentul rămâne conform enunțului ("r" eșuează dacă fișierul
nu există, "w" creează fișierul dacă nu există, altfel îl trunchiază,
etc). Singura diferență este că în loc să-l deschizi de exemplu doar
cu GENERIC_WRITE și FILE_SHARE_WRITE în cazul "w", îl deschizi cu
GENERIC_WRITE|GENERIC_READ și FILESHARE_WRITE|FILE_SHARE_READ.

> - so_fopen, cu ce permisiuni se va crea fișierul in cazul in care nu există

Cu 0644 ar trebui să fie suficient.

> - funcțiile care primesc un SO_FILE *, ce trebuie să returneze în cazul în care vor primi un NULL

Nu o să testăm cazul ăsta. În principiu poți să întorci SO_EOF, sau
poți să nu tratezi deloc cazul (aparent până și funcțiile din libc
crapă cu segfault).

> - nu este specificat ce trebuie pus pe checker, ce comenzi trebuie sa expună Makefile-ul dacă acesta trebuie să existe. (se poate modifica fișierul .h ?)

Da, la toate temele va trebui să existe un Makefile. Trebuie să
conțină o regulă cu numele "build", care să genereze biblioteca
libso_stdio.so, respectiv so_stdio.dll. Am actualizat și în enunț.

Nu poți modifica fișierul so_stdio.h. Poți să-ți faci alte headere
dacă ai nevoie.

> - contează modul in care noi am construit buffer-ul (de ex 1 pentru write, 1 pentru read si incă unul temporar) sau e important doar conceptul de buffering și nu detaliile de implementare.

În principiu se poate implementa cu un singur buffer, dar n-ar trebui
să conteze atât timp cât trec testele.

În teste contează doar numărul de apeluri de sistem făcute. De
exemplu: dacă citesc 10000 de caractere trebuie să fi făcut în total 3
apeluri read, etc. Implementarea din spate nu contează.


More information about the so mailing list