Как определить, является ли открытый файл сокетом или каналом?

Я пытаюсь найти, какие элементы struct fdtable или struct file ] позволит мне определить, является ли открытый файл сокетом или каналом.

единственный путь, который я могу найти, это:

struct file f ....;
f.path->mnt->mnt_devname

Это возвращает имя устройства в точке монтирования, все сокеты/каналы, по-видимому, принадлежат sockfs или pipefs соответственно.

Есть ли более быстрый способ проверить, является ли открытый файл сокетом или каналом, используя другой член файла структуры или fdtable?

Примечание. Я использую определения ядра из версии 2.6.24

10
задан Hunter McMillen 30 March 2012 в 18:06
поделиться