我正在使用FTP安裝遠程網絡驅動器。當我做一個statfs()時,我得到一個-1。所以我想知道statfs()可以讀取遠程FTP驅動器嗎?
- statfs()可以讀取使用FTP掛載的遠程網絡驅動器嗎?
- 如果不是那麼我怎麼才能得到關於這個驅動器的信息(大小,可用空間)?
謝謝。 Satya Sidhu
我正在使用FTP安裝遠程網絡驅動器。當我做一個statfs()時,我得到一個-1。所以我想知道statfs()可以讀取遠程FTP驅動器嗎?
謝謝。 Satya Sidhu
statfs()可以讀取使用FTP掛接的遠程網絡驅動器嗎?
號
如果沒有,那麼我是怎麼回事有關此驅動器的信息(大小,可用空間)?
有一個FTP SITE命令允許客戶端發送任何命令到FTP服務器。通常這用於chmod,通常服務器會嚴格限制您可以使用哪些命令。您可以嘗試檢查命令是否可用,但大多數情況不是。那麼你運氣不好,至少只要你使用ftp與服務器通信。
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
您真的確定掛載是通過FTP完成的(可以顯示掛載選項),並且數據反映了遠程系統的真實情況?由於FTP沒有通用命令來獲取遠程文件系統的狀態,因此必須有一些魔術(非標準命令)才能使其工作。 –
有一些非標準的魔術可以使這項工作成爲可能,並且在將主機文件系統條目添加到主機表時,vxWorks可以完成這項工作。每次在主機上執行文件系統命令時(在我的示例中),vxWorks將自動通過帶有硬編碼證書的FTP登錄,然後執行操作。 – stu
「並執行操作...」 - 你知道這是哪個操作(FTP命令)嗎? –