Извините, если я задаю «двойной вопрос», но я не хочу разделять эти два :) Может быть, кто-нибудь знает, для чего используется TMPFS_MAGIC
со значением 0x01021994
? Он определен в /usr/include/linux/magic.h
, и я нашел его при запуске следующего кода, который пытается определить доступное пространство в каталоге linux (обычно это раздел):
QString path = "/dev/sde1";
struct stat stst;
struct statfs stfs;
if ( ::stat(path.toLocal8Bit(), &stst) == -1 )
{
return 0.0;
}
if ( ::statfs(path.toLocal8Bit(), &stfs) == -1 )
{
return 0.0;
}
return m_diskFree = stfs.f_bavail * ( stst.st_blksize / 1024 );
из командной строки gdb:
(gdb) print stfs
$1 = {f_type = 16914836, f_bsize = 4096, f_blocks = 2042909, f_bfree = 2042907, f_bavail = 2042907, f_files = 2042909, f_ffree = 2042267, f_fsid = {__val = {0, 0}}, f_namelen = 255, f_frsize = 4096, f_flags = 4128, f_spare = {0,
0, 0, 0}}
где f_type = 16914836
это магия сверху. К вашему сведению, «/dev/sde1» — это внешний диск с разделом NTFS.
А также приведенный выше код работает некорректно для разделов NTFS, смонтированных на Linux-системах (он работает для файловых систем ext*fs), поэтому я спрашиваю: знаете ли вы, как правильно находить свободное место для дисков NTFS, смонтированных на Linux-хостах? Команда linux df
, кажется, выполняет свою работу правильно, но мне не удалось найти правильный способ сделать это (пока...).
Спасибо, ф.