c - Why write() returns ssize_t but takes a parameter of size_t? -


i got warning when compiling code calls write()

warning: comparison between signed , unsigned integer expressions [-wsign-compare]

here definition of write():

ssize_t write(int fd, const void *buf, size_t count);  return value    on success, number of bytes written returned  (zero  indicates    nothing   written).   on  error, -1 returned, , errno set    appropriately. 

this looks strange me. suppose ssize_t int , ended writing big (> 2gb). can't use comparison of returned value of write() vs count, can i?

(edit: maybe should write question properly: right way use write() without getting warning nor running situation count == -1 after sign conversion? yes, know undefined behavior)

the return value signed type allows return value of -1 indicate failure.

from http://linux.die.net/man/2/write:

on success, number of bytes written returned (zero indicates nothing written). on error, -1 returned, , errno set appropriately.


Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -