Может ли statfs() читать удаленный сетевой диск, установленный с использованием FTP?
Да.
Необходимо использовать statfs() правильно. Пожалуйста, смотрите следующий пример:
#include <stat.h>
#include <stdio.h>
int myStatFs() {
struct statfs sfs;
int ret = statfs("host:", &sfs);
printf("[+] f_fbsize: %ld\n",sfs.f_bsize);
printf("[+] f_files: %ld\n",sfs.f_files);
printf("[+] f_bfree: %ld\n",sfs.f_bfree);
return ret;
}
И это то, что он выглядит, когда работает в приведенном выше примере:
-> myStatFs()
[+] f_fbsize: 16
[+] f_files: 25067444
[+] f_bfree: 2952740
value = -1 = 0xffffffff
->
Вы должны убедиться, что вы смонтировать сетевой диск правильно. Это то, что возвращает мой hostShow():
-> hostShow
hostname inet address aliases
-------- ------------ -------
localhost 127.0.0.1
xlnx_zynq7k 192.168.1.10
host 192.168.1.11
value = 0 = 0x0
->
На машине в 192.168.1.11 работает FTP-сервер.
Это то, что statfs структура выглядит следующим образом:
struct statfs {
long f_type; /* type of info, zero for now */
long f_bsize; /* fundamental file system block size */
long f_blocks; /* total blocks in file system */
long f_bfree; /* free block in fs */
long f_bavail; /* free blocks avail to non-superuser */
long f_files; /* total file nodes in file system */
long f_ffree; /* free file nodes in fs */
fsid_t f_fsid; /* file system id */
long f_spare[7]; /* spare for later */
};
Вот документация VxWorks 5.5 statfs (и это в основном то же самое для VxWorks 6.9):
http://www.vxdev.com/docs/vx55man/vxworks/ref/dirLib.html#statfs
Вы действительно уверены, что mount выполняется FTP (вы можете показать опцию mount) и что данные отражают правду о удаленной системе? Поскольку FTP не имеет общей команды для получения статуса удаленной файловой системы, для выполнения этой работы требуется некоторая магическая (нестандартная команда). –
Существует некоторая нестандартная магия, которая делает эту работу, и она выполняется vxWorks при добавлении записи файловой системы хоста в таблицу хоста. Каждый раз, когда команда на файловой системе выполняется на хосте (в моем примере), vxWorks автоматически регистрируется через FTP с жестко запрограммированными учетными данными и выполняет операцию. – stu
"и выполнить операцию ..." - знаете ли вы, какая операция (команда FTP) это? –