无法使用 C++ 访问网络附加存储 (NAS) 中的文件访问()函数?
例如,我有一个 10.20.30.11 版本的 Isilon NAS,我按照以下方式安装它:
mount 10.20.30.11:/folder /content
我可以使用 ls
命令在文件夹或 /content
中查找文件。它的 mod 是 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;
}
它将返回 -1 和 2 作为结果,这意味着“没有这样的文件或目录”。
./a.out /content/a/b/1.txt
-1
2
#define ENOENT 2 /* No such file or directory */
我认为这不是权限问题,因为mod是777,结果是“没有这样的文件或目录”。
I have an Isilon NAS in 10.20.30.11 for example, and I mounted it like following:
mount 10.20.30.11:/folder /content
I could use ls
command to find the file in folder or /content
. Its mod is 777.
bash-3.00# ls -l /content/a/b/1.txt
total 344131
rwxrwxrwx 1 1005 65533 140750 Feb 28 00:58 1.txt
But I cannot access it by access() function.
#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;
}
It will return -1 and 2 as a result, which means 'No such file or directory'.
./a.out /content/a/b/1.txt
-1
2
#define ENOENT 2 /* No such file or directory */
It is not a permission problem I think, because the mod is 777, and the result is 'No such file or directory'.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
来自 Linux 手册页。
From the Linux man pages.
最后发现需要使用如下命令来挂载Isilon存储。
需要指定版本和协议。
谢谢!
Finally, it is found that it need to use following command to mount the Isilon storage.
The version and protocol need specified.
Thanks!