On 05/08/2013 14:09, Luca Cerone 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!!!

Opening the pipe for reading will block until it's also opened for
writing, and vice versa.

In your bash code, 'ls' blocked until you ran 'cat', but because you
ran 'ls' in the background you didn't notice it!

In your Python code, the Python thread blocked on opening the pipe for
writing. It was waiting for another thread or process to open the pipe
for reading.

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to