错误:stat:C编程中没有这样的文件或目录,opendir()和stat()

巴尼·钱伯斯

嘿,谢谢你的阅读。

我正在制作一个程序,该程序接受1个参数(目录),并使用opendir()/ readdir()读取目录中的所有文件,并使用stat显示文件类型(reg,链接,目录等)。当我在shell中执行程序时,我收到错误消息“ No Such file or Directory”(我正在使用redhat linux)。这是我的代码:

#define _BSD_SOURCE
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {

    DIR *dirp;
    struct dirent* dent;
    struct stat info;

//If no args
    if(argc == 1){

        argv[1] = ".";  

            dirp=opendir(argv[1]); // specify directory here: "." is the "current directory"
            do {
                dent = readdir(dirp);
                if (dent)
                {
//////////////////////////////////////////////////////////////////////////
               if (stat(dent->d_name, &info) == -1) {
               perror("stat");
               exit(EXIT_FAILURE);
           }

           switch (info.st_mode & S_IFMT) {
           case S_IFBLK:  printf("block device\n");            break;
           case S_IFCHR:  printf("character device\n");        break;
           case S_IFDIR:  printf("dir ");                      break;
           case S_IFIFO:  printf("FIFO/pipe\n");               break;
           case S_IFLNK:  printf("lnk ");                      break;
           case S_IFREG:  printf("reg ");                      break;
           case S_IFSOCK: printf("socket\n");                  break;
           default:       printf("unknown?\n");                break;
           }

//////////////////////////////////////////////////////////////////////////

                    printf("%s \n", dent->d_name);

                }
            } while (dent);
            closedir(dirp);

       }

////////////////////////////////////////////////////////////////////////////////////////////////
//If specified directory    
    if(argc > 1){

        dirp=opendir(argv[1]); // specify directory here: "." is the "current directory"
        do {
            dent = readdir(dirp);
            if (dent)
            {

/////////////////////////////////////////////////////////////////////////////////////           
               if (stat(dent->d_name, &info) == -1) {
               perror("stat");
               exit(EXIT_FAILURE);
           }



           switch (info.st_mode & S_IFMT) {
           case S_IFBLK:  printf("block device\n");            break;
           case S_IFCHR:  printf("character device\n");        break;
           case S_IFDIR:  printf("dir ");                      break;
           case S_IFIFO:  printf("FIFO/pipe\n");               break;
           case S_IFLNK:  printf("lnk ");                      break;
           case S_IFREG:  printf("reg ");                      break;
           case S_IFSOCK: printf("socket\n");                  break;
           default:       printf("unknown?\n");                break;
           }
//////////////////////////////////////////////////////////////////////////////////////
//           printf("%s\n", argv[1]);

                printf("%s \n", dent->d_name);
            }
        } while (dent);
        closedir(dirp);

   } 
return 0;    
}

有任何想法吗?我有点卡住了。感谢您的输入

另外,是否将使用stat输出“链接”类型的文件,还是必须使用lstat?不知道在这种情况下如何使用lstat,如果我将结构类型更改为“ struct lstat info”,则会引发错误。

量子开发

dent->d_name 是相对于当前目录的文件名(例如“ /home/barney/myfile.txt”),而不是文件的绝对完整路径(例如/home/barney/sources/myfile.txt),即统计所期望的。

这就是为什么stat无法找到路径。dent->d_name在每次调用stat之前先打印,以观察这些不正确的路径。

编辑:您可以尝试chdir()将您的工作目录更改为argv [1]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误:stat:在C编程中没有这样的文件或目录,opendir()和stat()

来自分类Dev

File :: stat返回“没有这样的文件或目录”

来自分类Dev

Git Stat:没有这样的文件或目录

来自分类Dev

HEROKU错误:ENOENT:没有这样的文件或目录,stat'/app/distpublic/index.html'

来自分类Dev

ENOENT:没有这样的文件或目录,Express Middleware的stat错误

来自分类Dev

React.js:Heroku:错误:ENOENT:没有这样的文件或目录,stat'/app/src/client/build/index.html'

来自分类Dev

SailsJS 0.11:ENOENT:没有这样的文件或目录,stat'... / node_modules / .bin / cdl'

来自分类Dev

COPY失败:stat / var / lib / docker / tmp / docker-xxx:没有这样的文件或目录

来自分类Dev

错误:没有这样的文件或目录

来自分类Dev

没有这样的文件或目录错误

来自分类Dev

Golang中没有这样的文件或目录错误

来自分类Dev

在Linux中没有这样的文件或目录错误

来自分类Dev

错误2 pytesseract中没有这样的文件或目录

来自分类Dev

目录中没有这样的文件

来自分类Dev

C ++错误:在Fltk中“ FL / Fl_xyz_Button.H:没有这样的文件或目录”?

来自分类Dev

错误:创建目录:没有这样的文件或目录

来自分类Dev

sh中没有“没有这样的文件或目录”错误,但是该文件存在吗?

来自分类Dev

使用cat连接目录中的文件会出现“没有这样的文件或目录”错误

来自分类Dev

致命错误:文件系统:没有这样的文件或目录

来自分类Dev

使用Stat和OpenDir()/ ReadDir()以C语言列出当前目录和文件类型(Dir,Reg,Lnk)

来自分类Dev

使用Stat和OpenDir()/ ReadDir()以C语言列出当前目录和文件类型(Dir,Reg,Lnk)

来自分类Dev

错误:没有这样的文件或目录:编译makefile后没有'–std = c ++ 11'

来自分类Dev

mkdir目录中存在“没有这样的文件或目录”

来自分类Dev

在bash脚本中查找命令仅对目录导致“没有这样的文件或目录”错误?

来自分类Dev

C++:错误:opencv_core:即使需要的 .so 文件在 /usr/lib/ 中,也没有这样的文件或目录

来自分类Dev

FileNotFoundError:[错误2]没有这样的文件或目录:'ffmpeg'

来自分类Dev

致命错误:特征/密集:没有这样的文件或目录

来自分类常见问题

错误:ENOENT:没有这样的文件或目录,scandir

来自分类Dev

错误:ENOENT,没有这样的文件或目录-PhoneGap

Related 相关文章

  1. 1

    错误:stat:在C编程中没有这样的文件或目录,opendir()和stat()

  2. 2

    File :: stat返回“没有这样的文件或目录”

  3. 3

    Git Stat:没有这样的文件或目录

  4. 4

    HEROKU错误:ENOENT:没有这样的文件或目录,stat'/app/distpublic/index.html'

  5. 5

    ENOENT:没有这样的文件或目录,Express Middleware的stat错误

  6. 6

    React.js:Heroku:错误:ENOENT:没有这样的文件或目录,stat'/app/src/client/build/index.html'

  7. 7

    SailsJS 0.11:ENOENT:没有这样的文件或目录,stat'... / node_modules / .bin / cdl'

  8. 8

    COPY失败:stat / var / lib / docker / tmp / docker-xxx:没有这样的文件或目录

  9. 9

    错误:没有这样的文件或目录

  10. 10

    没有这样的文件或目录错误

  11. 11

    Golang中没有这样的文件或目录错误

  12. 12

    在Linux中没有这样的文件或目录错误

  13. 13

    错误2 pytesseract中没有这样的文件或目录

  14. 14

    目录中没有这样的文件

  15. 15

    C ++错误:在Fltk中“ FL / Fl_xyz_Button.H:没有这样的文件或目录”?

  16. 16

    错误:创建目录:没有这样的文件或目录

  17. 17

    sh中没有“没有这样的文件或目录”错误,但是该文件存在吗?

  18. 18

    使用cat连接目录中的文件会出现“没有这样的文件或目录”错误

  19. 19

    致命错误:文件系统:没有这样的文件或目录

  20. 20

    使用Stat和OpenDir()/ ReadDir()以C语言列出当前目录和文件类型(Dir,Reg,Lnk)

  21. 21

    使用Stat和OpenDir()/ ReadDir()以C语言列出当前目录和文件类型(Dir,Reg,Lnk)

  22. 22

    错误:没有这样的文件或目录:编译makefile后没有'–std = c ++ 11'

  23. 23

    mkdir目录中存在“没有这样的文件或目录”

  24. 24

    在bash脚本中查找命令仅对目录导致“没有这样的文件或目录”错误?

  25. 25

    C++:错误:opencv_core:即使需要的 .so 文件在 /usr/lib/ 中,也没有这样的文件或目录

  26. 26

    FileNotFoundError:[错误2]没有这样的文件或目录:'ffmpeg'

  27. 27

    致命错误:特征/密集:没有这样的文件或目录

  28. 28

    错误:ENOENT:没有这样的文件或目录,scandir

  29. 29

    错误:ENOENT,没有这样的文件或目录-PhoneGap

热门标签

归档