Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #31988

The pty module, reading from a pty, and Python 2/3

Date 2012-10-23 21:59 -0500
From Evan Driscoll <edriscoll@wisc.edu>
Subject The pty module, reading from a pty, and Python 2/3
Newsgroups comp.lang.python
Message-ID <mailman.2713.1351051154.27098.python-list@python.org> (permalink)

Show all headers | View raw


I have the following program. Everything is sunshine and rainbows when I 
run in in Python 2, but when I run it under Python 3 I get an IOError. 
2to3 only reports one dumb suggestion re. a print call (which I can get 
rid of by importing __future__'s print_function, and then it just 
suggests removing that import).

Can anyone shed any light? I am on Ubuntu Linux with Python 2.7.3 and 
3.2.3.


(Just for the record, I figured out that it ran under Python 2 by 
accident as I was reducing it for a "why doesn't this run?" email. :-) 
I'm not super-familiar with Py3 as I've mostly only worked with 2.)

I'm not 100% sure how this will come through, so I've also put it at 
http://pastebin.com/60wjXSF3.

Evan


import sys
import pty
import os

def get_text(filename):
     try:
         ( child_pid, fd ) = pty.fork()    # OK
     except OSError as e:
         print(str(e))
         sys.exit(1)

     if child_pid == 0:
         try:
             with open("log.txt", "w") as f:
                 f.write("about to execlp")
             os.execlp("cat", "cat", filename)
         except:
             with open("log.txt", "w") as f:
                 f.write("could not spawn process")
             print("Could not spawn")
             sys.exit(1)

     child_pty = os.fdopen(fd)
     return child_pty.read()


if __name__ == "__main__":
     print(get_text("my-pty-test.py"))


The read error I get is

Traceback (most recent call last):
   File "my-pty-test.py", line 28, in <module>
     print(get_text("my-pty-test.py"))
   File "my-pty-test.py", line 24, in get_text
     return child_pty.read()
IOError: [Errno 5] Input/output error

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

The pty module, reading from a pty, and Python 2/3 Evan Driscoll <edriscoll@wisc.edu> - 2012-10-23 21:59 -0500

csiph-web