When a tty (here a slave pty) is set in noncanonical input and blocking read
modes, a read() randomly blocks when:
"VMIN > kernel received >= user buffer size > 0".
The standard says that read() should block until VMIN bytes are received
[1][2]. Whether this is an implementation defined case not really specified by
POSIX or not, it should not behave randomly (otherwise it really should be
documented in termios manpage).
This is not a bug.
From the termios(3) man page:
* MIN > 0; TIME == 0: read(2) blocks until the lesser of MIN bytes or
the number of bytes requested are availā
able, and returns the lesser of these two values.
This does not appear in my man...
Anyway, how do you explain the random behavior then?
--
Julio Guerra