This is the mail archive of the
mailing list for the Cygwin project.
Re: closing stdout in a child python process means that process doesn't receive bytes from stdin anymore.
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Thu, 13 Nov 2008 15:01:47 +0100
- Subject: Re: closing stdout in a child python process means that process doesn't receive bytes from stdin anymore.
- References: <DB76EDB8-A3BE-4155-9FF7-EC169FF12568@zooko.com>
- Reply-to: cygwin at cygwin dot com
On Nov 13 06:30, zooko wrote:
> When someone runs "bin/trial --reactor=select
> on cygwin, using the cygwin version of Python, either manually (which I've
> done on two cygwin installations), or from the twisted buildbot --
> http://buildbot.twistedmatrix.com/builders/cygwin-py2.5-select -- then once
> the child process closes its fd #2, it subsequently receives no further
> bytes from its fd #1, even though the parent process has written some bytes
> to that pipe.
> I can reproduce this by running the Twisted unit tests, like this:
> step 1: get twisted:
> svn co svn://svn.twistedmatrix.com/svn/Twisted/trunk twisted
> step 2: cd into the top-level directory, and run trial:
> cd twisted && python ./bin/trial --reactor=select
> On other platforms that cygwin (see the Twisted buildbot --
> http://buildbot.twistedmatrix.com/supported?branch=trunk -- then this test
> exits quickly with success. On cygwin, using cygwin python.exe, this test
> instead enter an infinite loop as the child waits to receive further bytes
> on its stdin, and the parent waits for the child to respond to those bytes.
> (This doesn't happen on cygwin with the standard Win32 build of python.exe,
> of course, anymore than it happens on a Windows system without cygwin
> installed when using that executable.)
> I've opened a ticket about this on the twisted issue tracker as well:
> http://twistedmatrix.com/trac/ticket/3529 # closing stdout in a child
> process on cygwin means that process doesn't receive bytes from stdin
> anymore. I think.
> I've opened a ticket about this on the python issue tracker as well:
> http://bugs.python.org/issue4295 # closing stdout in a child process on
> cygwin means that process doesn't receive bytes from stdin anymore. I
I don't think I ever saw such an effect. I'm not using python, though.
If it's really sure that this isn't a problem in python but in Cygwin
itself we would really need a self-contained testcase, preferrably in
plain C. A simple, really short test script in python would be ok, too,
if plain C isn't an option for some reason.
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html