Каковы различия между каналами в Windows и Linux? - PullRequest
16 голосов
/ 10 октября 2008

Чем отличаются каналы в Windows и Linux?

Ответы [ 4 ]

22 голосов
/ 10 октября 2008

Одно из известных мне отличий состоит в том, что именованные каналы в Linux являются реальными записями в файловой системе (вы увидите это в списке каталогов, они имеют специальный тип), тогда как в Windows они хранятся в каком-то волшебном хранилище. где-то (все они доступны по пути "\\. \ pipe \".

Во-вторых, в Linux вы можете просто писать / читать из каналов, как если бы они были любым другим файлом, используя стандартные методы файлового ввода-вывода. В то время как в Windows вы должны использовать специальные функции «Pipe», которые являются частью Win32 API.

Мне больше нравится метод linux, потому что он позволяет мне использовать каналы с любым приложением, которое я хочу. Например:

mkfifo pipe.wav
decodeMP3 song.mp3 --out pipe.wav &
encodeAVI video.mpeg pipe.wav --out video.avi

Это позволяет мне направлять вывод декодера MP3 непосредственно в видеодекодер, вместо того, чтобы сначала декодировать весь MP3 в файл WAV на диске. Это удобно, если у вас двухъядерный процессор, потому что тогда вы выполняете обе операции одновременно, для хорошего ускорения.

5 голосов
/ 10 октября 2008

В Linux (и * ix в целом) "все является файлом". Вы можете читать / писать / искать каналы и сокеты и устройства без ограничений, если эти операции имеют смысл.

Принимая во внимание, что Windows имеет гораздо менее унифицированную архитектуру для этих различных типов объектов. Хотя я не могу рассказать вам подробности, я знаю, что буферизация каналов значительно отличается в Windows и Linux, поэтому вы можете столкнуться с трудностями там.

Кроме того, одним из распространенных Unix-y каналов является fork() подпроцесс, а затем связь с ним по каналу (родительский конец открывает один конец, дочерний - другой конец) Под Windows такие вещи просто невозможны. Механизмы МПК совершенно разные.

3 голосов
/ 10 октября 2008

См. Также предыдущую тему:

Что такое именованные трубы?

Который содержит мой дубль и несколько других людей

2 голосов
/ 21 июля 2016

Еще одно важное отличие

Под окнами

A | B | C 

До тех пор, пока A не завершит работу с выходом B, он не начнет читать, то же самое для выхода B, читаемого C

* nix соединяет вход и выход вместе, так что C может читать вывод B, а B может читать вывод A, пока A и B еще работают

Пропускная способность примерно такая же, но вывод отображается быстрее с * nix.

...