IPC против доменного носка против именованных каналов - PullRequest
8 голосов
/ 12 сентября 2009

Чем отличаются доменные сокеты IPC и Unix и именованные каналы?

Я получил расплывчатые определения из разных книг, но не смог понять, где и где их использовать.

Ответы [ 4 ]

6 голосов
/ 13 сентября 2009

Практически любой способ взаимодействия двух процессов может рассматриваться как форма IPC.

Например:

  1. Безымянные каналы (cat file.txt | grep foo) или Именованные каналы
  2. доменные сокеты Unix
  3. TCP или UDP сокеты
  4. Сокеты Netlink в Linux
  5. Различные механизмы совместно используемой памяти, такие как файлы с отображенной памятью
  6. Высокоскоростная передача сообщений, например ZeroMQ
6 голосов
/ 12 сентября 2009

Как указано в qrdl, сокеты и именованные каналы UNIX-домена являются механизмами IPC.

С этими двумя именованными каналами проще работать, но они гораздо менее гибки, чем сокеты домена UNIX. Например, если вы потенциально ожидаете более одного процесса чтения для каждого процесса записи, тогда сокеты UNIX-домена являются обязательными; если вы ожидаете, что процесс чтения остановится и начнется во время выполнения процесса записи, вам понадобятся сокеты UNIX-домена.

4 голосов
/ 12 сентября 2009

IPC означает Межпроцессное взаимодействие . Доменные сокеты UNIX и именованные каналы - это всего лишь два механизма IPC, описанные в Википедии:

0 голосов
/ 13 сентября 2009

Спасибо за внимание к вопросу, несколько обновленных функций:

В доменных сокетах фактическая связь (обмен данными) не использует файловую систему, но буферизируется в памяти ядра. По умолчанию это полнодуплексный режим.

Именованные каналы идентифицируются по их точке доступа - файлу, который хранится в файловой системе для обработки данных. Именованный канал по умолчанию поддерживает заблокированные операции чтения и записи. Однако можно заставить именованные каналы поддерживать неблокирующие операции, указав флаг O_NONBLOCK при их открытии. Именованный канал должен быть открыт только для чтения или только для записи. Его нельзя открывать для чтения-записи, потому что это полудуплекс, односторонний канал.

...