<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-03-12 0:47 GMT+02:00 Pascu Corneliu Florin <span dir="ltr"><<a href="mailto:pascucorneliuflorin@gmail.com" target="_blank">pascucorneliuflorin@gmail.com</a>></span>:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Salut,<div><br></div><div>Din ce vad read are urmatoarea declaratie  <b>ssize_t</b> read(int fd , void * buff, <b>size_t</b> len);</div>


<div>Totul este ok , dar ce se intampla cand fac ceva de genul: <b>read(fd, buff, SIZE_MAX)</b>;</div>
<div>SIZE_MAX vad ca este 0xffffffff , iar SSIZE_MAX este 0x7fffffff.  Orice read cu len>SSIZE_MAX</div><div>este undefined , right? Atunci de ce este len size_t definit in POSIX si nu ssize_t ?</div></div></blockquote>


<div><br></div><div>Salut, Florin!</div><div><br></div><div>* size_t este un tip întreg fără semn<br></div><div>* ssize_t vine de la signed size_t, adică un întreg cu semn</div><div><br></div><div>Conceptual, nu poți citi un număr negativ de octeți. Prin urmare al treilea parametru trebuie să fie un tip întreg, fără semn (size_t). Altfel, dacă s-ar folosi ssize_t, atunci ai putea specifica un număr negativ. </div>


<div>read() întoarce numărul de octeți citiți (un număr întreg pozitiv), 0 în caz că nu a citit nimic și -1 în cazul în care a fost o eroare. Deci pentru valoarea de return, avem nevoie de un tip întreg, cu semn (ssize_t).</div>


<div><br></div><div>Sper că acum e clar de ce antetul read() a fost proiectat așa.</div><div><br></div></div>Baftă!<br>-- <br>Răzvan Crainea
</div></div>