
poalman at gmail
Aug 5, 2013, 6:39 AM
Post #2 of 17
(68 views)
Permalink
|
|
Re: Simulate `bash` behaviour using Python and named pipes.
[In reply to]
|
|
On 5 August 2013 14:09, Luca Cerone <luca.cerone [at] gmail> wrote: > Hi everybody, > I am trying to understand how to use named pipes in python to launch > external processes (in a Linux environment). > > As an example I am trying to "imitate" the behaviour of the following sets > of commands is bash: > > > mkfifo named_pipe > > ls -lah > named_pipe & > > cat < named_pipe > > In Python I have tried the following commands: > > import os > import subprocess as sp > > os.mkfifo("named_pipe",0777) #equivalent to mkfifo in bash.. > fw = open("named_pipe",'w') > #at this point the system hangs... > > My idea it was to use subprocess.Popen and redirect stdout to fw... > next open named_pipe for reading and giving it as input to cat (still > using Popen). > > I know it is a simple (and rather stupid) example, but I can't manage to > make it work.. > > > How would you implement such simple scenario? > > Thanks a lot in advance for the help!!! > > You can pipe using subprocess p1 = subprocess.Popen(["ls", "-lah"], stdout=subprocess.PIPE) p2 = subprocess.Popen(["cat"], stdin=p1.stdout) p1.wait() p2.wait() You can also pass a file object to p1's stdout and p2's stdin if you want to pipe via a file. with open("named_pipe", "rw") as named_pipe: p1 = subprocess.Popen(["ls", "-lah"], stdout=named_pipe) p2 = subprocess.Popen(["cat"], stdin=named_pipe) p1.wait() p2.wait() > Luca > -- > http://mail.python.org/mailman/listinfo/python-list >
|