FIFOs can be really useful for inter-process communication (IPC). One process opens one end for writing, another process opens the other end for reading, and voila, IPC. Operating Systems usually help out with things like synchronization, usually causing the first process that opens the FIFO to block (stop running) until another process opens the other end. This is, of course, optional, so you can let your application do other stuff while it waits around for some other application to get its shit together and open the pipe. Of course if you *want* your process to block and it doesn't because of a bug in the OS (like in some versions of Solaris), then you've got problems.