在c ++中使用opendir打开现有目录时出错

时间:2015-02-12 07:53:03

标签: c++ file opendir

我正在使用如下的opendir()来访问目录。

DIR *dp;
if((dp  = opendir(dir.c_str())) == NULL) {
    cout << "Error(" << errno << ") opening " << dir << endl;
    return errno;
}

但是,即使目录存在,我仍然会收到以下错误。

Error(2) opening /path/to/folder/

当我执行ls / path / to / folder

时,我能够获得文件名列表

2 个答案:

答案 0 :(得分:2)

请注意/ path / to / folder与/ path / to / folder /

不同

答案 1 :(得分:2)

errno值2表示ENOENT(它是错误NO EN尝试的缩写),即&#34; 目录不存在,或者名称是空字符串< / EM>&#34 ;. 如何在代码中定义dir

std::string dir = "/path/to/folder/";
DIR* dp = opendir(dir.c_str());

if (dp == NULL) 
{
    std::cout << "Error(" << errno << ") opening " << dir << std::endl;
    perror("opendir");

    return errno;
}

closedir(dp);

更新#1:

尝试称你为shell脚本:

main.sh folder/ foldername 

main.sh包含的位置:

#!/bin/sh                                                                                                                                                                         
path="$1$2"
echo "$path"
ls -l "$path"