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
Post a Comment