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. 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