Это старый вопрос, но я предоставлю свою точку зрения, чтобы кто-то его расколол, поскольку я искал причину, по которой Linux/magic.h кажется неполным, и я не вижу определения для XFS_SUPER_MAGIC или значения, которое, я считаю, должно быть в любых файлах заголовков системы.
Это зависит от того, что вы пытаетесь выполнить. Если, например, вы пытаетесь прочитать на некоторых носителях, что вы не знаете форматирования, то Celada правильна, вам понадобится дополнительная информация о макете этой файловой системы, и в таких случаях, как NFS, может быть, что Магическое число не имеет смысла.
Однако, если вы используете системный вызов statfs(), чтобы определить, какой тип файловой системы используется inode, возможно, глядя на записи с dirent или что-то в этом роде, тогда магические числа в файле linux/magic.h насколько я могу это сказать. К сожалению, по-видимому, есть пробелы, поскольку я обнаружил, что ищу их для XFS. Который, кстати, кажется, возвращается из statfs() как 0x58465342. К лучшему или худшему (скорее всего, к сожалению), у меня есть сейчас:
#include <linux/magic.h>
#ifndef XFS_SUPER_MAGIC
#define XFS_SUPER_MAGIC 0x58465342
#endif
Возможно, это поможет, если вы сделали шаг назад и отправили фактическую проблему, которую вы пытаетесь решить. Вы можете обнаружить, что «определить тип файловой системы» не является существенным для решения вашей проблемы. Например, можете ли вы просто загружать UML и на самом деле монтировать файл? (Никаких специальных perms не требуется.) – BraveNewCurrency