Поддерживает ли интерфейс OS/VFS/FUSE семантику нескольких дескрипторов одного и того же файла или что-то, что должен выполнить драйвер?ПРЕДУПРЕЖДЕНИЕ: несколько открываются в одном файле
ответ
Короткие: Если вы хотите запретить это, вы должны обращаться с ним в драйвере.
Длинный: я не нашел никаких указаний в POSIX error codes of open(), которые предотвратили бы наличие нескольких ручек для одного и того же файла в том же процессе. Wikipedia states, что это хорошо:
и тот же файл может быть открыт одновременно несколькими процессами, и даже одним и тем же способом (в результате чего несколько дескрипторов файлов для того же самого файла) в зависимости от организации файла и файловой системы.
ПРЕДОХРАНИТЕЛЬ в it's documentation также не осуждает его; он часто просто проксирует семантику.
Чтобы попробовать, я дважды открыл тот же файл на Python и получил два разных дескриптора файла.
In [1]: fd1 = open("./resting.org")
In [2]: fd2 = open("./resting.org")
In [3]: fd1.fileno()
Out[3]: 5
In [4]: fd2.fileno()
Out[4]: 6
Таким образом, вы должны предотвратить это самостоятельно, может остаться POSIX совместимые, так как он не определен, но может привести к нарушению предположения некоторых незнающий программист сделал.
Отличный вклад. Спасибо за выполнение работы. –