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

Reply via email to