180 likes | 352 Views
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 ”
E N D
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” • 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
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
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
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
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
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
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