Я пытаюсь выяснить, какие элементы из struct fdtable
или struct file
позволят мне определить, является ли открытый файл сокетом или каналом.
Единственный путь, который я могу найти, это:
struct file f ....;
f.path->mnt->mnt_devname
Возвращает имя устройства в точке монтирования, все сокеты / каналы, очевидно, принадлежат sockfs или pipefs соответственно.
Есть ли более быстрый способ проверить, является ли открытый файл сокетом или каналом, используя другой элемент struct file или fdtable?
Примечание: я использую определения ядра из 2.6.24