Păi eroarea e una făcută de ei, nu una reală, de-aia errno nu e setat. Ei înlocuiesc apelul normal de read cu unul al lor care simulează eroare dar omite să seteze și errno.
On Tue, Mar 26, 2019, 21:28 George Diaconu <[email protected]> wrote: > Mersi. > Atunci las sa intoarca 0 sau 1 si nu mai declar tipuri diferite pentru > erori. > Din ce am inteles eu din testul ferror_read_small ar fi trebuit sa fie > setat errno, mai ales ca apelul de sistem read() intoarce totusi -1. > > > On Tue, Mar 26, 2019, 21:21 Paul Olaru <[email protected]> > wrote: > >> Nu îți pasă de errno. read() original setează errno dar erorile injectate >> de checker pe cazul respectiv nu setează. >> >> so_ferror doar spune dacă a fost o eroare (nu putem identifica de ce tip). >> >> On Tue, Mar 26, 2019, 20:57 George Diaconu via so <[email protected]> >> wrote: >> >>> Salut, >>> >>> Cum spune si subiectul, apelul read(), in momentul in care intoarce >>> -1, nu seteaza si errno. In manual scrie ca ar trebui sa il seteze, >>> dar totusi, secventa urmatoare de cod: >>> >>> long rc = read(...) >>> int code = errno; >>> printf("%d\n", code); >>> >>> afiseaza intotdeauna 0, chiar si atunci cand read() intoarce -1. >>> >>> Am inclus "errno.h", si nu fac nimic ciudat cu errno (cum ar fi sa-l >>> redeclar). >>> Am doua intrebari: >>> 1. Nu am inteles eu bine cand e setata valoarea intoarsa de errno? >>> 2. E ok daca imi declar singur mai multe coduri de eroare si le intorc >>> pe acestea in so_ferror()? >>> >>> Multumesc anticipat. >>> _______________________________________________ >>> http://ocw.cs.pub.ro/courses/so/info/lista-discutii >> >>
_______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
