我正在使用 FTP 安装远程网络驱动器。当我对其执行 statfs() 时,我得到 -1。所以我想知道
- statfs() 可以读取使用 FTP 挂载的远程网络驱动器吗?
- 如果没有,那么我还能如何获取有关此驱动器的信息(大小、可用空间)?
谢谢你。萨提亚悉度
我正在使用 FTP 安装远程网络驱动器。当我对其执行 statfs() 时,我得到 -1。所以我想知道
谢谢你。萨提亚悉度
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
statfs() 可以读取使用 FTP 挂载的远程网络驱动器吗?
不。
如果没有,那么我还能如何获取有关此驱动器的信息(大小、可用空间)?
有一个 FTP SITE 命令,它允许客户端向 FTP 服务器发送任何命令。通常这用于 chmod 并且通常它受到服务器的高度限制,您可以使用哪些命令。您可以尝试检查该df
命令是否可用,但大多数情况下不可用。那你就倒霉了,至少你只能用ftp与服务器通信。