文件存在,但打开文件仍然总是返回-1

时间:2015-02-01 07:55:52

标签: c++

文件"〜/ 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;
 }

1 个答案:

答案 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)

阅读Advanced Linux Programming