Salut, Într-adevăr, așa este. Sincronizarea aia prin sleep mai poate da rateuri în cazul în care 2 secunde nu sunt suficiente pentru ca procesul copil să scrie tot în pipe.
Așa că o să scot din testul respectiv verificarea numărului de apeluri ReadFile, ca să fie mai ușor. On Mon, 1 Apr 2019 at 19:36, Gabriel Boroghina via so <so@cursuri.cs.pub.ro> wrote: > > Salut, > > Am si eu problema asta. Din ce am observat, e o problema de > sincronizare intre procesul parinte > (care citeste din pipe) si procesul copil (care scrie in pipe). > > Ideea e ca pipe-ul creat cu CreatePipe are un buffer asociat de > dimensiune egala cu valoarea > data ca ultim parametru (nSize); si daca bufferul asta nu e suficient > de mare, procesul copil nu > o sa reuseasca sa scrie suficient (4096 bytes in principiu, incat sa > poti sa iti umpli tu bufferul din > SO_FILE cand citesti) pana incepe procesul parinte sa citeasca. > > O varianta simpla de rezolvare ar fi sa ii dai o dimensiune mare > buffer-ului pipe-ului; in felul asta, > in cele 2 secunde de Sleep din tester (linia 82, unde e si comentariul > // make sure the child process wrote > all the data) child-ul va apuca sa scrie tot in buffer, iar parent-ul > va citi cat de mult posibil (4096 la primele > 3 citiri, restul la a 4-a si va primi EOF la a 5-a). > > Dar as vrea si eu sa stiu daca varianta asta e acceptabila (ca > presupune sa setam nSize ala > cu un "magic constant" oarecum). > Btw, daca ii dai o dimensiune mica lui nSize (de ex. 300), o sa iti > pice si pe local (sau daca ii dai 2-3 > core-uri VM-ului :)) ). Daca dai nSize = 0, din ce am citit, se > foloseste o dimensiune standard (care nu e > prestabilita, depinde de RAM-ul disponibil, etc). > > Gabriel Boroghina > > On Sun, 31 Mar 2019 at 20:44, George Diaconu via so > <so@cursuri.cs.pub.ro> wrote: > > > > Salut, > > > > Vin cu o problema veche de cand lumea, local trec toate testele fara > > probleme, pe vmchecker, testul popen read da fail cu mesajul > > "src/test_popen_read.c:96: Incorrect number of reads: got 220, > > expected 5". > > O singura data a trecut testul acesta pe vmchecker, si atunci nu am > > modificat nimic intre upload-uri. Acum am mai facut cateva modificari, > > local merge, dar pe vmchecker nu vrea... > > Nici nu stiu cum sa fac debugging in clipa asta... > > _______________________________________________ > > http://ocw.cs.pub.ro/courses/so/info/lista-discutii > _______________________________________________ > http://ocw.cs.pub.ro/courses/so/info/lista-discutii _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii