#c #linux #unix-socket
#c #linux #unix-сокет
Вопрос:
При получении описаний файлов через доменный сокет UNIX необходимо инициализировать struct msghdr.msghdr
(и struct msghdr.msg_controllen
), чтобы указать на буфер, достаточно большой, чтобы принять N количество файловых дескрипторов.
В моем случае, однако, я не знаю априори количество файловых дескрипторов, которые отправляются. Похоже, что если буфер, на который указывает, struct msghdr.msghdr
недостаточно велик, то файловые дескрипторы, которые в него не помещаются, автоматически удаляются.
Как я могу убедиться, что этого не произойдет? Единственное возможное решение, которое я могу придумать, — это чтобы оба конца согласились с максимальным значением N и убедились, что получатель использует достаточно большой буфер struct msghdr.msghdr
.
Комментарии:
1. Отправлять количество дескрипторов, как обычно, через сокет, а затем отправлять их?