Serghei Amelian scria la data de 21 Ianuarie 2006:
> On Saturday 21 January 2006 17:02, Liviu Daia wrote:
> [...]
> 
> > >
> > > Nu abandonez operatia de scriere doar la "broken pipe" ci la orice
> > > alta eroare. E suficient sa-mi dea fwrite() <= 0.
> >
> >     Rezultatul lui fwrite(3) poate fi > 0 si sa ai totusi o eroare.
>
> Mmm, cred ca ai dreptate. Daca din 100 de bytes s-au scris 50,
> fwrite() imi va returna 50, right?

    fwrite(3) intoarce numarul de "elemente" scrise.  Daca dimensiunea
elementului (al doilea parametru) e 1, atunci intr-adevar intoarce 50.

> > Trebuie sa faci testul cu ferror(3), dupa care te poti uita la errno
> > ca sa afli ce s-a intamplat.  Nu trebuie insa sa renunti la operatie
> > la orice eroare, exemplul standard este errno == EINTR.
>
> Cand se manifesta EINTR? Nu e cumva doar la operatii neblocante?

    Nu, EINTR obtii in cazul in care un semnal asincron intrerupe un
system call.

> Sau il confund cu EINPROGRESS?

    Il confunzi cu EAGAIN / EWOULDBLOCK.  EINPROGRESS poate fi generat
de connect(2).

    Salutari,

    Liviu Daia

-- 
Dr. Liviu Daia                                  http://www.imar.ro/~daia

_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui