У меня есть API, который вызывается с дескриптором файла в качестве аргумента, и он внутренне хранит некоторое состояние, связанное с дескриптором файла.Затем при последующих вызовах с тем же значением дескриптора файла можно просмотреть ранее созданное состояние.
В основном это работает, за исключением случая, когда вызывающий код вызывает мой API с дескриптором файла, а затем закрывает дескриптор файла.Затем выделяет новый файловый дескриптор (через socket () или accept () или т. д.), который в итоге получает то же целочисленное значение, что и закрытое, и передает этот новый файловый дескриптор моему API.В этот момент мой API делает не то, потому что он ошибочно связывает состояние старого сокета с новым файловым дескриптором.
Одним из решений этой проблемы было бы заставить вызывающий код уведомлять мой API всякий раз, когда он закрывается.сокет, так что мой API будет знать, чтобы удалить связанное состояние .... но я бы предпочел не заставлять пользователя делать это, так как это было бы неудобно для них, и они были бы склонны забыть сделать этов любом случае.
Поэтому мне интересно, есть ли какой-нибудь умный способ определить, связан ли дескриптор файла во время T с теми же базовыми структурами, с которыми он был связан во время (Tx).Если бы я мог это сделать, мой API был бы достаточно умен, чтобы определить, когда целочисленное значение дескриптора файла использовалось повторно, и сделать все правильно.
FWIW этот код предназначен для запуска в первую очередь под MacOS / X и Linux, но чем более портативное решение, тем лучше.