C++ 无法使用C+;访问网络连接存储(NAS)中的文件+;access()函数?
例如,我在10.20.30.11中安装了一个Isilon NAS,我安装了它,如下所示:C++ 无法使用C+;访问网络连接存储(NAS)中的文件+;access()函数?,c++,networking,nas,C++,Networking,Nas,例如,我在10.20.30.11中安装了一个Isilon NAS,我安装了它,如下所示: mount 10.20.30.11:/folder /content 我可以使用ls命令在文件夹或/content中查找文件。它的国防部是777 bash-3.00# ls -l /content/a/b/1.txt total 344131 rwxrwxrwx 1 1005 65533 140750 Feb 28 00:58 1.txt 但是我不能通过access()函数访问它
mount 10.20.30.11:/folder /content
我可以使用ls
命令在文件夹或/content
中查找文件。它的国防部是777
bash-3.00# ls -l /content/a/b/1.txt
total 344131
rwxrwxrwx 1 1005 65533 140750 Feb 28 00:58 1.txt
但是我不能通过access()函数访问它
#include <iostream>
#include <string>
#include <unistd.h>
#include <cerrno>
using namespace std;
#include <stdio.h>
int main( int argc, const char* argv[] )
{
int returnVal = 0;
returnVal = access(argv[1], R_OK);
cout << returnVal << endl;
cout << errno << endl;
return 0;
}
我认为这不是权限问题,因为mod是777,结果是“没有这样的文件或目录”。来自Linux手册页
./a.out /content/a/b/1.txt
-1
2
#define ENOENT 2 /* No such file or directory */
access()可能无法在NFS上正常工作
启用UID映射的文件系统,
因为UID映射是在
服务器,并对客户端隐藏,
它检查权限
最后,发现需要使用以下命令来装载Isilon存储 mount-o vers=2,proto=tcp 1.2.3.4:/remote/mnt 需要指定版本和协议 谢谢