From: Albert Hopkins on
I have a snippet of code that looks like this:

pid, fd = os.forkpty()
if pid == 0:
subprocess.call(args)
else:
input = os.fdopen(fd).read()
...


This seems to work find for CPython 2.5 and 2.6 on my Linux system.
However, with CPython 3.1 I get:

input = os.fdopen(fd).read()
IOError: [Errno 5] Input/output error

Is there something wrong in Python 3.1? Is this the correct way to do
this (run a process in a pseudo-tty and read it's output) or is there
another way I should/could be doing this?

-a


From: MRAB on
Albert Hopkins wrote:
> I have a snippet of code that looks like this:
>
> pid, fd = os.forkpty()
> if pid == 0:
> subprocess.call(args)
> else:
> input = os.fdopen(fd).read()
> ...
>
>
> This seems to work find for CPython 2.5 and 2.6 on my Linux system.
> However, with CPython 3.1 I get:
>
> input = os.fdopen(fd).read()
> IOError: [Errno 5] Input/output error
>
> Is there something wrong in Python 3.1? Is this the correct way to do
> this (run a process in a pseudo-tty and read it's output) or is there
> another way I should/could be doing this?
>
The documentation also mentions the 'pty' module. Have you tried that
instead?
From: Terry Reedy on
On 3/2/2010 9:24 AM, Albert Hopkins wrote:
> I have a snippet of code that looks like this:
>
> pid, fd = os.forkpty()
> if pid == 0:
> subprocess.call(args)
> else:
> input = os.fdopen(fd).read()
> ...
>
>
> This seems to work find for CPython 2.5 and 2.6 on my Linux system.

To get help, or report a bug, for something like this, be as specific as
possible. 'Linux' may be too generic.

> However, with CPython 3.1 I get:
>
> input = os.fdopen(fd).read()
> IOError: [Errno 5] Input/output error
>
> Is there something wrong in Python 3.1? Is this the correct way to do
> this (run a process in a pseudo-tty and read it's output) or is there
> another way I should/could be doing this?

No idea, however, the first thing I would do is call the .fdopen and
..read methods separately (on separate lines) to isolate which is raising
the error.

tjr



From: Albert Hopkins on
On Tue, 2010-03-02 at 13:25 -0500, Terry Reedy wrote:

> To get help, or report a bug, for something like this, be as specific as
> possible. 'Linux' may be too generic.

This is on Python on Gentoo Linux x64 with kernel 2.6.33.

>
> > However, with CPython 3.1 I get:
> >
> > input = os.fdopen(fd).read()
> > IOError: [Errno 5] Input/output error
> >
> > Is there something wrong in Python 3.1? Is this the correct way to do
> > this (run a process in a pseudo-tty and read it's output) or is there
> > another way I should/could be doing this?
>
> No idea, however, the first thing I would do is call the .fdopen and
> .read methods separately (on separate lines) to isolate which is raising
> the error.

The exception occurs on the read() method.


From: Albert Hopkins on
On Tue, 2010-03-02 at 17:32 +0000, MRAB wrote:
> The documentation also mentions the 'pty' module. Have you tried that
> instead?

I haven't but I'll give it a try. Thanks.

-a


 |  Next  |  Last
Pages: 1 2
Prev: Call Signtool using python
Next: Queue peek?