Path: csiph.com!usenet.pasdenom.info!gegeweb.org!usenet-fr.net!nerim.net!novso.com!newsfeed.xs4all.nl!newsfeed1.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.033 X-Spam-Evidence: '*H*': 0.93; '*S*': 0.00; 'subject:Python': 0.06; 'bash': 0.09; 'subject:using': 0.09; 'python': 0.11; 'background.': 0.14; 'thread': 0.14; 'already,': 0.16; 'blocked': 0.16; 'from:addr:mrabarnett.plus.com': 0.16; 'from:addr:python': 0.16; 'from:name:mrab': 0.16; 'message-id:@mrabarnett.plus.com': 0.16; 'received:84.93': 0.16; 'received:84.93.230': 0.16; 'wrote:': 0.18; 'written': 0.21; 'code,': 0.22; 'python?': 0.22; 'header:User-Agent:1': 0.23; 'right.': 0.26; 'header:In-Reply- To:1': 0.27; 'point': 0.28; 'program,': 0.31; 'another.': 0.31; 'ok.': 0.31; 'pipe': 0.31; 'run': 0.32; 'another': 0.32; 'open': 0.33; 'running': 0.33; 'sense': 0.34; 'received:84': 0.35; 'but': 0.35; 'vice': 0.36; "didn't": 0.36; 'thanks': 0.36; 'should': 0.36; 'to:addr:python-list': 0.38; 'to:addr:python.org': 0.39; 'how': 0.40; 'ensure': 0.60; "you're": 0.61; 'talking': 0.65; 'it!': 0.67; 'header:Reply-To:1': 0.67; 'reply-to:no real name:2**0': 0.71; 'overcome': 0.74; 'end.': 0.84; 'reply!': 0.84; 'reply-to:addr:python.org': 0.84; 'writing,': 0.84; 'connection,': 0.95 X-CM-Score: 0.00 X-CNFS-Analysis: v=2.1 cv=XqLDZz19 c=1 sm=1 tr=0 a=0nF1XD0wxitMEM03M9B4ZQ==:117 a=0nF1XD0wxitMEM03M9B4ZQ==:17 a=0Bzu9jTXAAAA:8 a=K2DDQYBT4xIA:10 a=zc0myEFsKt8A:10 a=ihvODaAuJD4A:10 a=OUOv7kDek9cA:10 a=8nJEP1OIZ-IA:10 a=EBOSESyhAAAA:8 a=8AHkEIZyAAAA:8 a=5F5fH2KFBC4A:10 a=cOjjBi4nkoOugyoHvugA:9 a=wPNLvfGTeEIA:10 X-AUTH: mrabarnett:2500 Date: Mon, 05 Aug 2013 15:51:35 +0100 From: MRAB User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130620 Thunderbird/17.0.7 MIME-Version: 1.0 To: python-list@python.org Subject: Re: Simulate `bash` behaviour using Python and named pipes. References: <7f5c60c4-50c7-4a93-af22-5c8549f87461@googlegroups.com> In-Reply-To: <7f5c60c4-50c7-4a93-af22-5c8549f87461@googlegroups.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: python-list@python.org List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 35 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1375714293 news.xs4all.nl 15967 [2001:888:2000:d::a6]:37880 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:51964 On 05/08/2013 15:11, Luca Cerone wrote: > Hi MRAB, thanks for the reply! >> >> Opening the pipe for reading will block until it's also opened for >> writing, and vice versa. >> > > OK. > >> >> In your bash code, 'ls' blocked until you ran 'cat', but because you >> ran 'ls' in the background you didn't notice it! >> >> > Right. >> >> 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. > > OK. What you have written makes sense to me. So how do I overcome the block? > As you said in bash I run the ls process in background. How do I do that in Python? > You need to ensure that the pipe is already open at the other end. Why are you using a named pipe anyway? If you're talking to another program, then that needs to be running already, waiting for the connection, at the point that you open the named pipe from this end. If you're using a pipe _within_ a program (a queue would be better), then you should opening for writing in one thread and for reading in another.