文件"〜/ workspace / Test.txt"确实存在,但fd总是返回-1。有人可以提一下代码有什么问题吗?感谢。
int fd = open("~/workspace/Test.txt", O_RDONLY);
cout << "fd is "<<fd<<endl;
if (fd < 0) {
cout << "did not find file"<<endl;
return false;
}
答案 0 :(得分:6)
(假设你的操作系统是像Linux一样的Posix)
应扩展~
。通常壳会扩展它。但是open
想要一个真正的文件路径。
你可以尝试:
std::string fname (getenv("HOME"));
fname += "/workspace/Test.txt";
int fd = open(fname.c_str(), O_RDONLY);
if (fd<0) {
std::cerr << "failed to open " << fname
<< " : " << strerror(errno) << std::endl;
return false;
}
请参阅glob(7),wordexp(3),getenv(3),strerror(3),open(2),environ(7)