Есть ли способ POSIX определить, можно ли открыть файл (на самом деле последовательный порт), не открывая его?
Мы создаем устройство, которое может отображаться как последовательный порт USB в различных POSIX-совместимых системах. Я поддерживаю API, который позволяет вызывающим абонентам получать список всех доступных на данный момент (то есть не используемых, имеющих правильные права доступа и т. Д.) Экземпляров нашего устройства, доступных им. Вызывающий также может получить список, в котором также указаны используемые устройства.
Конечно, простой способ сделать это - просто попытаться открыть / закрыть каждый последовательный порт-кандидат и заметить, какие из них открыты. Я бы предпочел не делать этого, так как возможно, что несколько приложений, использующих этот API (который будет библиотекой / dylib в их приложении), могут создавать условия гонки, когда они оба пытаются одновременно запрашивать один и тот же последовательный порт, что приводит к тому, что одно приложение ошибочно считаю, что устройство использовалось.
Так что мне нужен способ узнать, что порт может быть открыт без фактического его открытия. Я видел, как другие использовали схемы файлов блокировок, в которых был создан специальный файл, указывающий на то, что порт используется - предполагается, что если файл отсутствует, порт доступен. Моя проблема в том, что могут быть другие пользователи порта, кроме моей библиотеки, которые не соблюдают такую схему, поэтому я не могу положиться на нее.
Возможно, есть какие-то низкоуровневые функции POSIX, которые позволяют мне запрашивать состояние файла в этом отношении, даже не пытаясь открыть его?