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
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
> 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.
I haven't but I'll give it a try. Thanks.
-a
I tried to use pty.fork() but it also produces the same error.
I also tried passing 'r', and 'rb' to fdopen() but it didn't make any
difference.
-a