получение неизвестного количества файловых дескрипторов через доменный сокет UNIX

#c #linux #unix-socket

#c #linux #unix-сокет

Вопрос:

При получении описаний файлов через доменный сокет UNIX необходимо инициализировать struct msghdr.msghdr struct msghdr.msg_controllen ), чтобы указать на буфер, достаточно большой, чтобы принять N количество файловых дескрипторов.

В моем случае, однако, я не знаю априори количество файловых дескрипторов, которые отправляются. Похоже, что если буфер, на который указывает, struct msghdr.msghdr недостаточно велик, то файловые дескрипторы, которые в него не помещаются, автоматически удаляются.

Как я могу убедиться, что этого не произойдет? Единственное возможное решение, которое я могу придумать, — это чтобы оба конца согласились с максимальным значением N и убедились, что получатель использует достаточно большой буфер struct msghdr.msghdr .

Комментарии:

1. Отправлять количество дескрипторов, как обычно, через сокет, а затем отправлять их?