On Thu, Jan 16, 2020 at 06:48:30AM -0700, Raymond, David wrote: > Hmm.... > > Thought I found a 2^15 -1 version of SSIZE_MAX in the includes, but I > guess I was mistaken. > > The real issue is whether doing write(2) to a TCP/IP socket bigger > than 2^15 - 1 bytes causes problems. I am not very experienced in > this area.
It should not. But short read and writes are a real thing and code should take care, see the example in write(2). -Otto > > Dave Raymond > > On 1/15/20, Bryan Steele <bry...@gmail.com> wrote: > >> I am confused about SSIZE_MAX and read(2)/write(2). The POSIX > >> SSIZE_MAX is something like 2^15 -1. This seems to be a real > >> limitation when writing to a TCP/IP socket, as I learned from > >> experience. However, much larger reads and writes seem to be possible > >> to files and UNIX sockets (pipes). This makes me uneasy, given the > >> warning in the man pages for read(2)/write(2). > >> > >> Any insight on this topic would be appreciated. > >> > >> -- > >> David J. Raymond > >> david.raym...@nmt.edu > >> http://physics.nmt.edu/~raymond > > > > Not in any reasonably modern version of POSIX.. > > > > https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html > > > > {SSIZE_MAX} > > Maximum value for an object of type ssize_t. > > > > $ grep -R "SSIZE_MAX" /usr/include > > ./amd64/limits.h:#define SSIZE_MAX LONG_MAX /* max value for > > a ssize_t */ > > > > /usr/include/sys/limits.h: > > #ifdef __LP64__ > > .. > > # define LONG_MAX 0x7fffffffffffffffL > > ... > > #else > > .. > > # define LONG_MAX 0x7fffffffL > > > > -Bryan. > > > > > -- > David J. Raymond > david.raym...@nmt.edu > http://physics.nmt.edu/~raymond >