В чем разница между доменными сокетами IPC и Unix и именованными каналами?
Я получил расплывчатые определения из разных книг, но не мог понять, какое из них следует использовать и где.
В чем разница между доменными сокетами IPC и Unix и именованными каналами?
Я получил расплывчатые определения из разных книг, но не мог понять, какое из них следует использовать и где.
Практически любой способ взаимодействия двух процессов друг с другом можно рассматривать как форму IPC.
Например:
Как указано в qrdl, сокеты домена UNIX и именованные каналы являются механизмами IPC.
Из этих двух именованных каналов проще работать, но они гораздо менее гибкие, чем сокеты домена UNIX. Например, если вы потенциально ожидаете более одного процесса чтения для каждого процесса записи, тогда сокеты домена UNIX являются обязательными; если вы ожидаете, что процесс чтения остановится и начнется во время выполнения процесса записи, вам потребуются сокеты домена UNIX.
IPC означает Межпроцессное взаимодействие. Доменные сокеты UNIX и именованные каналы - это всего лишь два механизма IPC, описанные в Википедии:
Спасибо за внимание к вопросу, несколько обновленных функций:
В сокетах домена фактическая связь (обмен данными) не использует файловую систему, а буферизуется в памяти ядра. По умолчанию это полнодуплексный режим.
Именованные каналы идентифицируются своей точкой доступа, файлом, который хранится в файловой системе для обработки данных. Именованный канал по умолчанию поддерживает заблокированные операции чтения и записи. Однако можно сделать так, чтобы именованные каналы поддерживали неблокирующие операции, указав флаг O_NONBLOCK при их открытии. Именованный канал должен быть открыт только для чтения или только для записи. Его нельзя открывать для чтения-записи, потому что это полудуплексный, односторонний канал.