Названі труби (фіфо) мають чотири три переваги, про які я можу придумати:
(Оновлено, завдяки відгукам Stephane Chazelas )
Отже, однією з очевидних завдань, яку ви не можете досягти за допомогою безіменного каналу, є звичайна програма клієнт / сервер.
Останній (вражений) пункт про однонаправлені труби є актуальним для Linux, POSIX (див. popen()
) Говорить про те, що трубу потрібно читати або записувати лише в Linux, вони є односпрямованими . Див. Розуміння ядра Linux (3-е вид. O'Reilly) для детальних відомостей про Linux (p787). Інші ОС пропонують двонаправлені (безіменні) труби.
Як приклад, Nagios використовує фіфо для свого командного файлу . Різні зовнішні процеси (сценарії CGI, зовнішні перевірки, NRPE і т.д.) записують команди / оновлення до цього файлу, і вони обробляються стійким процесом Nagios.
Названі труби мають особливості, що не відрізняються від TCP-з'єднань, але є важливі відмінності. Оскільки у fifo є стійке ім'я файлової системи, ви можете писати в нього навіть тоді, коли немає читача, правда, запис буде блокований (без асинхронізації або не блокує введення-виведення), хоча ви не втратите дані, якщо приймач не буде розпочато (або перезапускається).
Для ознайомлення дивіться також сокети домену Unix та відповідь на це питання Stackoverflow, який узагальнює основні методи IPC , і цей, про який йдетьсяpopen()