[so] [SO][Tema 2][Linux]Inconsistență la codul de retur so_fclose()
Paul-Stelian Olaru
olarupaulstelian97 at gmail.com
Sat Mar 16 18:12:00 EET 2019
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
<so at cursuri.cs.pub.ro> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20190316/3ebf21db/attachment.html>
More information about the so
mailing list