Writing to open subprocess pipes.

Thomas Jollans thomas at jollans.com
Wed Jun 16 17:37:25 EDT 2010


On 06/16/2010 10:29 PM, Brandon McGinty wrote:
> All,
> I have researched this both in the python documentation, and via google.
> Neither subprocess nor os.popen* will do what I need.
> First, I would instanshiate an ongoing shell, that would remain active
> throughout the life of the socket connection.
> I am trying to take commands, coming in from a standard python socket,
> modify them, and then send them onto this shell, /bin/bash, for example.
> The output of these modified commands will be received from the shell,
> and sent back through the socket, possibly being modified further.
> The connection on the other end of the socket will send multiple
> commands, and will need output for each.
> Both subprocess and os.popen* only allow inputput and output one time,

Is that a fact?

Does this not work:

>>> from subprocess import Popen, PIPE
>>> cat = Popen(["cat"], stdin=PIPE, stdout=PIPE)
>>> cat.stdin.write("hello, world!\n")
>>> cat.stdout.readline()
'hello, world!\n'
>>> cat.stdin.write("and another line\n")
>>> cat.stdout.readline()
'and another line\n'
>>>


> and the output to be read only when the process terminates.
> I need input and output to be read and written continuously, during the
> lifetime of the shell.
> I hope this makes sense, and if not, I shall do my best to elaborate
> further.
> I appreciate all the help this group has given me in the past, and I
> certainly appreciate any help you all can offer now.
> 
> Sincerely,
> Brandon McGinty




More information about the Python-list mailing list