statfs()可以读取远程FTP驱动器吗?

时间:2014-11-17 12:52:29

标签: ftp filesystems mount vxworks filesysteminfo

我正在使用FTP安装远程网络驱动器。当我对它执行statfs()时,我得到-1。所以我想知道

  1. statfs()可以读取使用FTP挂载的远程网络驱动器吗?
  2. 如果没有,那么我怎样才能获得有关此驱动器的信息(大小,可用空间)?
  3. 谢谢。 Satya Sidhu

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-2)

  

statfs()可以读取使用FTP挂载的远程网络驱动器吗?

没有

  

如果没有,那么我怎样才能获得有关此驱动器的信息(大小,可用空间)?

有一个FTP SITE命令,允许客户端向FTP服务器发送任何命令。通常这用于chmod,通常它受服务器的严格限制,您可以使用哪些命令。您可以尝试检查df命令是否可用,但大多数情况下不是。那么你运气不好,只要你只能使用ftp与服务器通信就可以了。