On Mon, Apr 17, 2023 at 12:19:19AM +0000, David Holland wrote: > However, I'd expect that getting a second open of the same tty for the > output would work around this. (dup isn't enough, but a new open > should work, because non-blocking I/O is a file-handle-level mode, not > a tty driver mode.)
Since there seems to have been some confusion about this upthread: FIONBIO works by setting FNONBLOCK on the struct file. This then results in IO_NDELAY being set on VOP_READ/VOP_WRITE calls. The FIONBIO is also forwarded to underlying objects, ioctl being the mess it is, but it seems the primary consumer of that is the socket layer; in particular tty.c does nothing upon receiving it. This means the state is per-open. Also, regarding something else mentioned upthread, see O_NOSIGPIPE. -- David A. Holland dholl...@netbsd.org