nosepipe error

Chris Angelico rosuav at gmail.com
Tue Feb 23 13:42:15 EST 2016


On Wed, Feb 24, 2016 at 5:11 AM, Dan Stromberg <drsalists at gmail.com> wrote:
> I'm seeing, in the nosepipe code:
>         # we use stdout for IPC, so block all other output
>         self._stream = sys.__stdout__
>
> I'm not sure using stdout/stdin for IPC is a great thing; a lot of
> tests write to stdout or stderr, whether intentionally or
> unintentionally.

Using standard streams for IPC is well recognized. If it's known in
advance, it shouldn't be a problem - writing to stdout/stderr would
simply result in a test failure.

> I'm attempting to replace the use of stdout/stdin with os.pipe(), but
> so far I'm not having much luck.  I get three write()'s, and then a
> hang.  So far, I'm ignoring the fact that os.read() and os.write()
> might split or aggregate chunks over a socket, since this is a
> socketpair communicating on the same machine.

Sounds like the buffer's full. You'll need to have another thread
reading before you start writing, to prevent that.

ChrisA


More information about the Python-list mailing list