`

Linux系统编程 --- 如何列出一个目录下面的所有文件

    博客分类:
  • c++
阅读更多

 

   linux平台可以使用opendir函数来打开一个目录,用readdir读取目录当中的一个entry(一个entry可以是子目录,文件,软硬链接等),如果需要读取所有目录下面的文件,需要使用while((entry = readdir(dp))) 来读去每个entry,直到读取的entry == NULL。

      还有需要注意的就是目录打开之后,需要自己关闭的,可以调用closedir(DIR*)来关闭,这个和文件fd的操作非常类似,不会的同学可以参考标准的stdio文件操作。

      下面代码是从wiki上面摘过来的, listdir扮演了打印指定目录下面所有文件的功能,类似于linux命令"ls"的功能。

 

/**************************************************************
 * A simpler and shorter implementation of ls(1)
 * ls(1) is very similar to the DIR command on DOS and Windows.
 **************************************************************/
#include <stdio.h>
#include <dirent.h>
int listdir(const char *path) {
  struct dirent *entry;
  DIR *dp;
  dp = opendir(path);
  if (dp == NULL) {
    perror("opendir");
    return -1;
  }
  while((entry = readdir(dp)))
    puts(entry->d_name);
  closedir(dp);
  return 0;
}
int main(int argc, char **argv) {
  int counter = 1;
  if (argc == 1)
    listdir(".");
  while (++counter <= argc) {
    printf("\nListing %s...\n", argv[counter-1]);
    listdir(argv[counter-1]);
  }
  return 0;
}

 c++编程网

分享到:
评论

相关推荐

    入门学习Linux常用必会60个命令实例详解doc/txt

    一个新安装的Linux系统允许用户使用“Alt+F1”到“Alt+F6”键来访问前六个虚拟控制台。虚拟控制台最有用的是,当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作,关闭这个程序。 shutdown 1.作用 ...

    linux操作系统培训资料.pptx

    (cp a b 把a文件拷贝成b文件) du 列出目录占用磁盘空间的大小 rmdir 删除一个目录 find 在指定路径查找文件 linux操作系统培训资料全文共28页,当前为第6页。 Linux常用操作命令 命令 功能 grep 在指定文件查找...

    新版Android开发教程.rar

    Android 是一个专门针对移动设备的软件集,它包括一个操作系统,中间件和一些重要的应用程序。 Beta 版 的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 ...

    Android高级编程--源代码

     由于Android 1.0是一个正在兴起的全新手机操作系统,所以当前支持它的手机还不多。和任何其他产品早期的发行版一样,Android的软件和开发库还会经历很多正常的改进和完善。本书的内容和示例提供了如何使用当前SDK...

    Google Android SDK开发范例大全(完整版)

    例如,如果应用程序需要访问网络 — 例如为了下载一个文件 — 那么 manifest 文件中必须显式地列出该许可。很多应用程序可能启用了这个特定的许可。这种声明式安全性有助于减少恶意应用程序损害设备的可能性。 下...

    vc++ 开发实例源码包

    操作大文件,自定义了一个操作大文件的类,并进行了测试。 chapter7 实现了声音录制等功能。 CHtmlViewProjV2 详细演示了HtmlView的使用与HtmlView事件站点拦截的实现、js调用。 CIVStringSet_Demo 自定义了一个...

    grub4dos-V0.4.6a-2017-02-04更新

    执行时可以不用输入扩展名,比如输入test如果当前路径下有一个test.g4b就会自动使用。 2013-10-17 1.修改代码支持新版HOTKEY。 2013-07-10 1.insmod现在支持长文件名(以前最多11个字符,现在没有限制). 2....

    自己动手写操作系统(含源代码).part2

    Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的...

    自己动手写操作系统(含源代码).part1

    Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框, 但这个对话框关闭,不会使主窗口关闭。 8.如下图,在主窗口加入按钮,显示文本为“弹出一个对话框”,在其上点击鼠 标右键,在弹出的菜单中选择go to ...

    操作系统(内存管理)

    计算机上的每一个进程都认为自己可以访问所有的物理内存。显然,由于同时在运行多个程序,所以每个进程不可能拥有全部内存。实际上,这些进程使用的是 虚拟内存。 只是作为一个例子,让我们假定您的程序正在访问...

    python(1).docx

    下面列出的各种 Python 库/模块/工具,如果名称带超链接,说明是第三方的;否则是 Python 语言内置的。 1 算法 1.1 字符串处理 1.2 数学类 1.3 安全类 2 跨编程语言 2.1 整合 C / C++ 语言 2.2 整合 JVM 平台 2.3 ...

    vc++ 应用源码包_1

    列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip iconbutton_src.zip 创建一个按钮,并在上面显示图标。 jpeglib_demo.zip jpeglib_src.zip 利用Delphi的代码在VC中显示JPG...

    vc++ 应用源码包_6

    列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip iconbutton_src.zip 创建一个按钮,并在上面显示图标。 jpeglib_demo.zip jpeglib_src.zip 利用Delphi的代码在VC中显示JPG...

    vc++ 应用源码包_2

    列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip iconbutton_src.zip 创建一个按钮,并在上面显示图标。 jpeglib_demo.zip jpeglib_src.zip 利用Delphi的代码在VC中显示JPG...

    vc++ 应用源码包_5

    列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip iconbutton_src.zip 创建一个按钮,并在上面显示图标。 jpeglib_demo.zip jpeglib_src.zip 利用Delphi的代码在VC中显示JPG...

    vc++ 应用源码包_3

    列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip iconbutton_src.zip 创建一个按钮,并在上面显示图标。 jpeglib_demo.zip jpeglib_src.zip 利用Delphi的代码在VC中显示JPG...

    c#学习笔记.txt

    本文假定你具备一切学习此语言所需的知识,没有也不要紧,我会在文中尽量列出相关的link,鉴于互联网瞬息万变的特点,若某一链接不可用,请自行至Google查询。 如前所述,我是一个狮子座男人,一度我认为学习Java会...

    jsr80 java 访问 usb

    在所有 USB 系统中,只有一个主设备,到主计算机的的 USB 接口称为 主控器(host controller)。主控器有两个标准――开放主控器接口(Compaq 的 Open Host Controller Interface,OHCI)和通用主控器接口(Intel 的 ...

Global site tag (gtag.js) - Google Analytics