1 / 8

Linux Pipes and FIFOs

Linux Pipes and FIFOs. David Ferry, Chris Gill CSE 522S - Advanced Operating Systems Washington University in St. Louis St. Louis, MO 63130. Pipes. Pipes are a common way to move data between programs, e.g.: cat filename | grep “ search_string ”

Download Presentation

Linux Pipes and FIFOs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Linux Pipes and FIFOs David Ferry, Chris Gill CSE 522S - Advanced Operating Systems Washington University in St. Louis St. Louis, MO 63130

  2. Pipes Pipes are a common way to move data between programs, e.g.: cat filename | grep “search_string” • Linux provides pipe() system call that allows inter-process communication • Command above relies on shell “pipelines” which do not necessarily use pipe() CSE 522S – Advanced Operating Systems

  3. Linux’s Pipes The Linux pipe() system call: • Allows anonymous (non-named) communication • Is unidirectional • Produces / consumesdata through file syscallswrite() and read() • Data stored in kernel via pipefsfilesystem See /fs/pipe.c for implementation Process A Write FD Pipe Imp. Read FD Process B CSE 522S – Advanced Operating Systems

  4. Pipe() Semantics Pipes are only usable between related processes: • pipe() creates a readand write descriptor • Process forks • Reader deletes write FD,writer deletes read FD • Reader reads, writer writes Process A Write FD Read FD fork() Process B Write FD Read FD CSE 522S – Advanced Operating Systems

  5. FIFOs (Named Pipes) Variant to pipes: • Handle to FIFO exists as a regular file • Read and written like regular file • Data is stored in kernel (not disk) • Allows non-related processes to communicate • Supports multiple readers & writers • Must be open at both ends before reading or writing CSE 522S – Advanced Operating Systems

  6. Pipe and FIFO Limits Atomicity: • I/O is atomic for data quantities less than PIPE_BUF • Typical: PIPE_BUF = 4096 bytes Write capacity: • Typically 64K • Writers block or fail if pipe is full Polling vs. Blocking: • Readers may block or fail based on flags set during pipe creation CSE 522S – Advanced Operating Systems

  7. FIFOs vs. Files Even though FIFOs have a handle in the regular file system, they are not files! • Files backed by a real filesystem • FIFOs not backed • Files have no atomicity guarantee • FIFOs must be opened for reading and writing before either may occur • Files have no practical capacity limit CSE 522S – Advanced Operating Systems

  8. Pipe Paradigms Pipes are useful for implementing many design patterns and idioms: Producer / Consumer Client / Server Active Object Process A Pipe Process B Process A Process B FIFO Process D Process C Pipe Process A Process B Pipe CSE 522S – Advanced Operating Systems

More Related