[so] [SO][Tema2][Linux] read() nu seteaza errno
Adrian Șendroiu
molecula2788 at gmail.com
Wed Mar 27 11:54:42 EET 2019
Salut,
Da, apelul read este înterceptat de un hook care doar întoarce -1. Am
decis să nu vă bag și în errno pentru că s-ar fi complicat destul de
mult implementarea. Cam fiecare funcție poate seta errno la diferite
valori, ar fi fost mult de implementat și testat.
On Tue, 26 Mar 2019 at 21:36, Paul Olaru via so <so at cursuri.cs.pub.ro> wrote:
>
> 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
>
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
More information about the so
mailing list