Skip to main content

You are not logged in. Your edit will be placed in a queue until it is peer reviewed.

We welcome edits that make the post easier to understand and more valuable for readers. Because community members review edits, please try to make the post substantially better than how you found it, for example, by fixing grammar or adding additional resources and hyperlinks.

Required fields*

5
  • 6
    Nice answer, but the OP seems to think the processes run sequentially. You might make it clearer here that the processes are run concurrently, and the pipe is like.... a pipe between buckets, where water flows through all at the (approx.) same time. Commented Apr 28, 2012 at 6:16
  • 1
    Thank you for the clarification. The sources I've been reading made it seem like piped programs ran sequentially, rather than concurrently. Commented Apr 28, 2012 at 7:58
  • 1
    To see experience the processes starting in an undetermined fashion try running this 1000 times: echo -n a >&2 | echo b >&2 Commented May 4, 2016 at 7:43
  • Maybe a naive question...Has the first process being blocked/waiting on the second process (for a piece information) anything to do w/ the pipe? But then pipes must be bidirectional? Commented Sep 26, 2020 at 15:38
  • 1
    @stdout If the writing process is blocked it is because the pipe is full and the reading process needs to read some data out of the pipe so that there is space. If the reading process is blocked it is because the pipe is empty and the writing process needs to write some data into the pipe. The blocking happens because either the pipe is empty or the pipe is full (pipes have finite size of course). Commented Sep 26, 2020 at 15:52