[CentralOH] Popen file descriptor difference between Python 2.6 and 2.7+ on Linux

Eric Floehr eric at intellovations.com
Fri Feb 16 22:34:35 EST 2018

I have a really odd problem. I have some code that requires a Linux file
descriptor (/dev/fd/N) where N is some number. The following example code
demonstrates effectively what is being done.

In order to run the code create a file called "/tmp/test" with some text in

The code works in Python 2.6, but in Python 2.7 or later, I get:

cat: /dev/fd/4: No such file or directory

Can anyone figure out why? And what needs to change for the following code
to work on 2.7 and later. Assume that I cannot change needing file
descriptors (/dev/fd/4 for example):

Here is the code:

from subprocess import Popen, PIPE

data = Popen(
    stdin=open('/tmp/test', 'rb'),

fd_name = '/dev/fd/%d' % data.fileno()

fddata = Popen(

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/centraloh/attachments/20180216/f0d222e3/attachment.html>

More information about the CentralOH mailing list