[so] [SO][Tema2][Linux] read() nu seteaza errno
Paul Olaru
olarupaulstelian97 at gmail.com
Tue Mar 26 21:36:35 EET 2019
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 <pgn.george at gmail.com> 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 <olarupaulstelian97 at gmail.com>
> 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 <so at cursuri.cs.pub.ro>
>> 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
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20190326/c58c6d0f/attachment.html>
More information about the so
mailing list