FIFO-пайпы и Unix Sockets?
pipe - это механизм коммуникации между процессами. pipe, как уже было сказано выше, является однонаправленным потоком данных, все данные, записанные процессом в пайп перенаправляются ядром другому процессу для чтения.
pipe это объект VFS (Virtual File System), поэтому pipe не имеет соответсвутющего образа на диске, грубо говоря он хранится в памяти (pipefs). 
Главным недостатком pipe является тот факт, что невозможно открыть уже существующий pipe. Поэтому два произвольных процесса не могут использовать одновременно один и тот же pipe, за исключением случаев если pipe был создан общим родительским процессом.fifo (named pipe)  - это специальный файл, очень похожий на pipe, за исключением того, что fifo inode содержится в файловой системе, плюс fifo это двунаправленный механизм обмена данными между двумя и более процессами, поэтому доступ к fifo на чтение и запись может получить любой процесс. Грубо говоря процесс общения с использованием fifo выглядит следующим образом - "сервер" создает fifo файл, который успользуется "клиентами" для выполнения запросов. Каждый "клиент", прежде чем установить соединение с "сервером", создает другой fifo файл, в который "сервер" может записать ответ клиенту, при это указывая имя fifo в изначальном запросе.socket (unix socket) - это специальный файл, используемый для коммуникации между двумя  и более различными процессами, выполняющимися на одной машине. Процессы обращаются к socket по его inode. 
Итак в чем же отличие fifo (named pipe) от unix socket:
1. "Сервер" (или принимающий процесс) в fifo не умеет различать "Клиентов". 
"Клиенты", использующие unix socket имеют отдельные соединения с сервером. В fifo различные "клиенты" могут писать в pipe, но "Сервер" не может различить "Клиентов" друг от друга.
2.  При создании fifo и unix socket используются различные системные вызовы.
Unix socket создается системным вызовом "socket()". fifo создается "mkfifo()"
3. Для подключения к fifo и unix используюся различные системные вызовы.
Сравнение по производительности - fifo vs unix socket:
1. unix socket  обеспечивает лучшую производительнось при передаче большого объема данных 
2. для малых объемов unix socket уступает в производительности fifo. это вызвано накладными раскодами, связанными с созданием сокета, инициализацией и подключением к нему.
Разница большая, как между файловыми дескрипторами и сокетами. Не знаю, как там с мультипоточностью в фифо, но в тредах у них точно проблемы. А с сокетом все просто: accept(), fork() и вперед. К тому же сокеты относятся к сетевой подсистеме, для них есть свои буфера и sysctl'ы. И именно они предназначены для клиент-серверного взаимодействия.

А фифо это чето такое из мира применения perl )