Межпроцессное взаимодействие на той же машине, сигнал или сокет, как решить? - PullRequest
0 голосов
/ 14 июня 2011

Мне кажется, что для этой работы можно использовать signal и socket,

как вы решаете, какой из них использовать на самом деле?

1 Ответ

6 голосов
/ 14 июня 2011

Использование сигналов для IPC неудобно и примитивно.Вы действительно должны выбирать между сокетами Unix (не TCP!) И каналами.

Как правило, с каналами проще программировать, поскольку они гарантируют, что один write размером PIPE_BUF является атомарным.Однако у них есть свои ограничения.Например, когда записывающее устройство работает быстрее считывающего устройства, оно начинает блокироваться, когда буфер канала заполняется.Размер этого буфера по умолчанию составляет около 64 КБ, и его нельзя изменить без перекомпиляции ядра, по крайней мере, в Linux.Каналы также являются однонаправленными, что означает, что в каждом процессе вам нужно будет сохранить пару каналов, один для чтения и один для записи.

Сокеты Unix имеют настраиваемый размер буфера отправки и более продвинутый интерфейс программирования..

...