Вы можете сделать блокировку отправки в UNIX-домен. Если буфер приема принимающей стороны заполнен, или если количество незанятых (недопустимых) отправленных буферов сокетов слишком велико, отправитель будет блокироваться.
SOCK_STREAM Разделы домена UNIX работают как TCP-сокеты. SOCK_DGRAM Домены домена UNIX работают подобно UDP, за исключением того, что дейтаграммы домена UNIX гарантируют доставку по заказу, тогда как сокеты UDP могут быть перенаправлены или удалены. (Кроме того, UNIX Domain Sockets можно использовать для отправки файловых дескрипторов и передачи учетных данных пользователя между процессами, ни один из которых не может выполняться с помощью TCP, UDP или труб.)
Так, поскольку доставка в порядке гарантирована всеми типы UNIX-доменных сокетов, приемник может просто прекратить прием, когда он занят другими вещами, и отправитель будет автоматически заблокирован, когда свободного места в буфере нет (или будет уведомлено о том, что свободного места в буфере нет, -блокировка на своем гнезде). Затем, когда приемник снова начнет прием, отправителю будет разрешено отправлять больше.
Таким образом, сокеты являются FIFO без контроля потока: для управления потоком необходим (требуется) протокол верхнего уровня (при необходимости). – jldupont
TCP/IP не слишком много знает. Написание обработчика управляющих сообщений (вы должны их написать тоже) - единственный способ сделать это. – Alex
@ Жан-Лу: это правильно. 'AF_UNIX' не обеспечивает абсолютно никакой семантики управления потоком. Основное устройство может предоставлять условия переполнения буфера, что приведет к 'send()' возврату ошибки, но это специфично для устройства. –