Ответ 1
В Windows есть два вида труб: анонимные трубы и именованные каналы. Анонимные трубы соответствуют (справедливо) близко к трубам Unix - типичное использование заключается в том, чтобы родительский процесс устанавливал их наследование дочерним процессом, часто связанным со стандартными потоками ввода, вывода и/или ошибок. В свое время анонимные каналы были реализованы совершенно иначе, чем именованные каналы, поэтому они (на одном примере) не поддерживали перекрывающиеся ввода-вывода. С тех пор это изменилось, так что анонимный канал - это просто именованный канал с именем, которого вы не знаете, поэтому вы не можете открыть его по имени, но он все еще имеет все другие функции именованного канала (например, вышеупомянутые перекрывающиеся возможности ввода/вывода).
Windows с именем pipe больше похожа на сокеты. Они возникли с OS/2, где они изначально были основным механизмом создания клиент-серверных приложений. Они были первоначально построены вокруг NetBIOS (т.е. Использовали NetBIOS как для адресации, так и для транспорта). Они тесно интегрированы с такими вещами, как проверка подлинности Windows, поэтому вы можете (например) иметь именованный сервер каналов олицетворять клиента, чтобы ограничить сервер выполнением того, что клиент мог бы выполнить, если он был зарегистрирован напрямую. Совсем недавно MS столкнулась с некоторыми проблемами, чтобы избавиться от зависимости от NetBIOS, но, хотя они теперь могут использовать IP в качестве своего транспорта (и DNS для адресации, IIRC), они по-прежнему используются в основном для машин Windows. Основное использование на других машинах - имитация Windows, например, запуск Samba.