Am observat că la testul 13 îmi rulează doar de 56 de ori so_fputc. Aparent, este consistent cu eroarea raportată de testul următor. Voi investiga mai departe.
La so_fclose eu apelez so_fflush(). Deci codul de eroare al lui fclose ar trebui să fie același cu al lui fflush? [Oh well, se pare că am reușit cu asta. Deci da, dacă eșuează ori fflush ori close/CloseHandle returnez eroare; nu-mi pasă de ferror]. Voi investiga mai departe ce se întâmplă pe testele 13 și 14, de ce pun doar 56 de caractere în loc de numărul corect. Dacă nu dau de cap, revin cu alt topic. From: Adrian Șendroiu Sent: Saturday, March 16, 2019 6:06 PM To: Paul-Stelian Olaru; Sisteme de Operare Subject: Re: [so] [SO][Tema 2][Linux]Inconsistență la codul de retur so_fclose() On Sat, 16 Mar 2019 at 17:38, Paul-Stelian Olaru via so <[email protected]> wrote: > > În cerință nu este foarte clar când ar trebui so_fclose(stream) să returneze > 0 și când SO_EOF. > > > > În teste, văd că după o eroare la fgetc/fread ar trebui să returneze 0 și > după o eroare la fputc/fwrite ar trebui SO_EOF. Deci codul de retur bănuiesc > că nu depinde de so_feof(stream). > > > > Când mă folosesc de codul de eroare, pică testele pe fread. Când nu mă > folosesc de codul de eroare, pică testul pe write_small (got 0, expected -1). În principiu so_fclose întoarce SO_EOF dacă eșuează vreunul din apelurile de sistem apelate mai departe de so_fclose. În cazul testelor ferror_read_small și ferror_read_large, eroarea apare la apelul so_fread, care încearcă să facă read. La momentul so_fclose, singurul apel de sistem care se mai face este close, care nu întoarce nici o eroare. În schimb, la testul ferror_write_small, so_fwrite nu va face nici un apel de sistem (totul e scris în buffer). Eroarea este prinsă abia la so_fclose, care înainte de a închide fișierul va face și un so_fflush, care la rândul lui va executa apelul de sistem write. > Also, testul 13 [test_fwrite_huge] spune că am 0 apeluri de sistem write (mă > rog, spune read dar hook-ul cred că e pentru write). O să mai fac verificări > dar dacă nu rezolv cu asta revin cu un topic separat. Problema este vizibilă > și în ce am momentan pe repo și cred că și în cel mai recent upload de pe > VMchecker. Din ce văd, nu îți ajunge deloc în so_fflush ca să facă vreun write.
_______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
