C++ 无法使用C+;访问网络连接存储(NAS)中的文件+;access()函数?

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()函数访问它

例如,我在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()函数访问它

#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

需要指定版本和协议

谢谢