Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Pipeline (Unix)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Implementation== A pipeline mechanism is used for [[inter-process communication]] using message passing. A pipeline is a set of [[process (computing)|process]]es chained together by their [[standard streams]], so that the output text of each process (''[[stdout]]'') is passed directly as input (''[[stdin]]'') to the next one. The second process is started as the first process is still executing, and they are executed [[concurrency (computer science)|concurrently]]. It is named by analogy to a physical [[pipeline transport|pipeline]]. A key feature of these pipelines is their "hiding of internals".<ref>Ritchie & Thompson, 1974</ref> This in turn allows for more clarity and simplicity in the system. In most Unix-like systems, all processes of a pipeline are started at the same time, with their streams appropriately connected<!--details please: buffering-->, and managed by the [[Scheduling (computing)|scheduler]] together with all other processes running on the machine. <!--death of a process, broken pipes, signal handling, etc.--> An important aspect of this, setting Unix pipes apart from other pipe implementations, is the concept of [[Buffer (computer science)|buffering]]: for example a sending program may produce 5000 [[bytes]] per [[second]], and a receiving program may only be able to accept 100 bytes per second, but no data is lost. Instead, the output of the sending program is held in the buffer. When the receiving program is ready to read data, the next program in the pipeline reads from the buffer. If the buffer is filled, the sending program is stopped (blocked) until at least some data is removed from the buffer by the receiver. In Linux, the size of the buffer is 65,536 bytes (64KiB). An open source third-party filter called [https://linux.die.net/man/1/bfr bfr] is available to provide larger buffers if required. ===Network pipes=== Tools like [[netcat]] and [[socat]] can connect pipes to TCP/IP [[Internet socket|sockets]].
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)