Я пытаюсь выбрать между pipe и сокетами unix для IPC механизм.
Обе поддерживают функции select ()
и epoll ()
, и это здорово.
Теперь каналы имеют 4 КБ (на сегодняшний день) "атомарную" запись, что гарантируется ядро Linux.
Существует ли такая функция в случае сокетов unix? Я не смог найти ни одного документа, в котором бы это прямо говорилось.
Допустим, я использую сокет UNIX и записываю x байтов данных от моего клиента. Уверен ли я, что эти x байтов будут записаны на стороне сервера сокета, когда мой сервер select ()
взломает?
По тому же вопросу, будет ли использование SOCK_DGRAM гарантировать, что запись будет атомарной (если такая возможна гарантия), поскольку дейтаграммы должны быть отдельными четко определенными сообщениями?
В чем тогда будет разница при использовании SOCK_STREAM в качестве режима передачи?
Заранее спасибо.