tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: hangup in close(2) after posix_openpt(3)
Mouse wrote:
> > Now, I think the argument could be made that the 7.0 behavior is
> > actually correct, that the close() *should* block (interruptibly)
> > until the last echoed character has been read by the master,
>
> Hm. I think I disagree. I think the slave close should succeed more
> or less immediately, with the data should be buffered in the pty driver
> until either it's read from the master or until the master side is also
> closed.
That's an interesting idea, but I don't think this is really a pty
issue. The same question arises with real serial port ttys - if you
still have buffered output data when you call close(), what should
happen?
> I think an argument could be made that _all_ slave->master data not
> promptly read by the master should be dropped, since that's how real
> serial ports work - if you're not paying attention when a character
> arrives on the wire, it's lost.
Only on serial ports with no flow control. I think a serial port with
flow control is the more useful model to emulate.
> > In the case of an exiting process we don't have much of a choice - we
> > need something like the -current 17171/12534 fix because if the
> > output data aren't discarded, the slave process will never die.
>
> To the extent that this is true, it's true only because the pty driver
> makes it so. (IOW: it's fixable.)
It may be fixable for ptys, but we still need a way to ensure that
processes writing to real serial ports blocked by hardware flow
control can be killed. That is the specific problem the timeout code
in -current is intended to fix.
--
Andreas Gustafsson, gson%gson.org@localhost
Home |
Main Index |
Thread Index |
Old Index