How would I do a continuous write over a pipe in the following code...

Aahz aahz at pythoncraft.com
Thu Feb 25 19:51:01 EST 2010


In article <9d0f6456-97c7-4bde-8e07-9576b02f91f9 at t31g2000prh.googlegroups.com>,
chad  <cdalten at gmail.com> wrote:
>
>import subprocess as s
>
>broadcast = s.Popen("echo test | wall", shell=True,stdout=s.PIPE)
>
>out = broadcast.stdout
>while 1:
>    out
>    broadcast.wait()
>
>broadcast.stdout.close()
>
>
>The code only executes once. What I want to do is be able to
>continuously write over the pipe once it is open. I could put
>s.Popen() inside the while loop, but that seems a bit too messy. So is
>there some way to just open the pipe once, and once it is open, just
>continuously write over it vs just opening and closing the pipe every
>time?

You really should do this instead, untested:

broadcast = s.Popen(['wall'], stdin=s.PIPE)
while 1:
    broadcast.write('test\n')
    time.sleep(1)
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

"Many customs in this life persist because they ease friction and promote
productivity as a result of universal agreement, and whether they are
precisely the optimal choices is much less important." --Henry Spencer



More information about the Python-list mailing list