Beej's Guide to Unix IPC
    Brian "Beej Jorgensen" Hall
    beej@beej.us
Version 1.0.1
July 25, 2007
Copyright © 2007  Brian "Beej Jorgensen" Hall
Contents
- 1. Intro
 
- 1.1. Audience
 
- 1.2. Platform and Compiler
 
- 1.3. Official Homepage
 
- 1.4. Email Policy
 
- 1.5. Mirroring
 
- 1.6. Note for Translators
 
- 1.7. Copyright and Distribution
 
- 2. A fork() Primer
 
- 2.1. "Seek ye the Gorge of Eternal Peril"
 
- 2.2. "I'm mentally prepared!  Give me The Button!"
 
- 2.3. Summary
 
- 3. Signals
 
- 3.1. You can't SIGKILL the President!
 
- 3.2. Everything you know is wrong
 
- 3.3. Some signals to make you popular
 
- 4. Pipes
 
- 4.1. "These pipes are clean!"
 
- 4.2. fork() and pipe()—you have the
power!
 
- 4.3. The search for Pipe as we know it
 
- 4.4. Summary
 
- 5. FIFOs
 
- 5.1. A New FIFO is Born
 
- 5.2. Producers and Consumers
 
- 5.3. O_NDELAY!  I'm UNSTOPPABLE!
 
- 5.4. Multiple Writers—How do I multiplex all these?
 
- 5.5. Concluding Notes
 
- 6. File Locking
 
- 6.1. Setting a lock
 
- 6.2. Clearing a lock
 
- 6.3. A demo program
 
- 6.4. Summary
 
- 7. Message Queues
 
- 7.1. Where's my queue?
 
- 7.2. "Are you the Key Master?"
 
- 7.3. Sending to the queue
 
- 7.4. Receiving from the queue
 
- 7.5. Destroying a message queue
 
- 7.6. Sample programs, anyone?
 
- 7.7. Summary
 
- 8. Semaphores
 
- 8.1. Grabbing some semaphores
 
- 8.2. Controlling your semaphores with semctl()
 
- 8.3. semop(): Atomic power!
 
- 8.4. Destroying a semaphore
 
- 8.5. Sample programs
 
- 8.6. Summary
 
- 9. Shared Memory Segments
 
- 9.1. Creating the segment and connecting
 
- 9.2. Attach me—getting a pointer to the segment
 
- 9.3. Reading and Writing
 
- 9.4. Detaching from and deleting segments
 
- 9.5. Concurrency
 
- 9.6. Sample code
 
- 10. Memory Mapped Files
 
- 10.1. Mapmaker
 
- 10.2. Unmapping the file
 
- 10.3. Concurrency, again?!
 
- 10.4. A simple sample
 
- 10.5. Summary
 
- 11. Unix Sockets
 
- 11.1. Overview
 
- 11.2. What to do to be a Server
 
- 11.3. What to do to be a client
 
- 11.4. socketpair()—quick full-duplex pipes
 
- 12. More IPC Resources
 
- 12.1. Books
 
- 12.2. Other online documentation
 
- 12.3. Linux man pages