[so] [Tema2][General] Incorrect number of read syscalls

Vlad Lungu vlad.lsc2008 at gmail.com
Sun Mar 15 22:39:25 EET 2020


Intr-adevar, e o solutie. Totusi cred ca prima varianta nu ar trebui sa fie
considerata gresita.

În dum., 15 mar. 2020 la 22:33, Teodor Dutu <teodor.dutu at gmail.com> a scris:

> Salut,
>
> Uite alta presupunere valida: daca tu citesti sa zicem 2K, ii folosesti pe
> aia pana ai nevoie de altii. Nu consideri ca ai ajuns la EOF, ci doar
> folosesti ce ai, fara sa ai bufferul plin.
>
> Are sens si merge. Recomand.
>
> Teodor Dutu
>
> On Sun, Mar 15, 2020 at 10:29 PM Vlad Lungu via so <so at cursuri.cs.pub.ro>
> wrote:
>
>> Da, daca fac presupunerea asta nu mai apare problema specificata. Insa e
>> o presupunere complet gresita. Read nu garanteaza ca va citi cat ii dam
>> noi, asa ca nu ne putem baza pe asa ceva. Testul in sine e cel mai simplu.
>> Face doua so_fgetc. Primul populeaza, teoretic, bufferul, al doilea citeste
>> din buffer. Testul vrea un singur apel de read pentru ca al doilea so_fgetc
>> ar trebui sa citeasca din buffer, nu printr-un read. Ce e de facut?
>>
>> În dum., 15 mar. 2020 la 22:24, Paul Olaru <olarupaulstelian97 at gmail.com>
>> a scris:
>>
>>> Bine, nu știu cum e testul în sine. Dacă so_fread e apelat cu maxim 14
>>> tu nu ar trebui să faci mai multe citiri. Când bufferul e gol și ai nevoie
>>> de date faci o singură citire, chiar dacă e sub cât are nevoie bufferul ca
>>> să se umple.
>>>
>>> On Sun, Mar 15, 2020, 22:21 Paul Olaru <olarupaulstelian97 at gmail.com>
>>> wrote:
>>>
>>>> Cred că există o presupunere (nu tocmai validă) în checker că poți
>>>> profita de faptul că dacă un apel read ți-a returnat mai puțin decât i-ai
>>>> cerut singurul motiv ar fi EOF.
>>>>
>>>> Dacă faci chestia asta îți trec toate testele?
>>>>
>>>> On Sun, Mar 15, 2020, 22:18 Vlad Lungu via so <so at cursuri.cs.pub.ro>
>>>> wrote:
>>>>
>>>>> Salut,
>>>>>   Primesc aceasta eroare. Checkerul asteapta sa fac o singura operatie
>>>>> de read pentru a popula bufferul. Eu fac fix ca la laborator. Intr-o bucla
>>>>> while testez daca mai am de citit. Daca a umplut bufferul sau apelul read a
>>>>> intors 0(eof), ies din bucla. Initial bufferul e 4096, citeste 14. Nu a
>>>>> intors 0, deci nu marcheaza eof si nu iese. Nu a umplut bufferul, deci nu
>>>>> iese. Astfel, face un al doilea apel de sistem, care intoarce 0 si iese din
>>>>> bucla. O solutie pe care o vad pentru a trece de checker e sa retin undeva
>>>>> si dimensiunea fisierului. in momentul in care dimensiunea fisierului a
>>>>> fost atinsa, iese. Asta se doreste?
>>>>> _______________________________________________
>>>>> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>>>>
>>>> _______________________________________________
>> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20200315/3d343a7c/attachment.html>


More information about the so mailing list