转载于:http://blog.csdn.net/lin_fs/article/details/7335573

1. opendir()

头文件

  #include<sys/types.h>

 

  #include<dirent.h>

函数原型

  DIR* opendir (const char * path ); (获取path子目录下的所由文件和目录的列表,如果path是个文件则返回值为NULL)

功能

  打开一个目录,在失败的时候返回一个空的指针。

返回值(DIR)

DIR 结构体的原型为:struct_dirstream

Linux系统中:

typedef struct __dirstream DIR;

       struct __dirstream
       {
         void *__fd; /* `struct hurd_fd' pointer for descriptor.   */
         char *__data; /* Directory block.   */
         int __entry_data; /* Entry number `__data' corresponds to.   */
         char *__ptr; /* Current pointer into the block.   */
         int __entry_ptr; /* Entry number `__ptr' corresponds to.   */
         size_t __allocation; /* Space allocated for the block.   */
         size_t __size; /* Total valid data in the block.   */
         __libc_lock_define (, __lock) /* Mutex lock for this structure.   */
        };

2.readdir

头文件

#include<dirent.h>

函数原型

struct dirent* readdir(DIR* dir_handle); (个人理解循环读取dir_handle,目录和文件都读)

功能

读取opendir 返回值的那个列表

返回值

返回dirent结构体指针,dirent结构体成员如下,(文件和目录都行)

 

  struct dirent

 

  {

 

  long d_ino; /* inode number 索引节点号 */

 

  off_t d_off; /* offset to this dirent 在目录文件中的偏移 */

 

  unsigned short d_reclen; /* length of this d_name 文件名长 */

 

  unsigned char d_type; /* the type of d_name 文件类型 */

 

  char d_name [NAME_MAX+1]; /* file name (null-terminated) 文件名,最长255字符 */

 

  }

3.用例

代码

#include<stdio.h> #include<dirent.h>

int main(void) {         DIR *dirptr=NULL;         int i=1;         struct dirent *entry;         if((dirptr = opendir("test.dir"))==NULL)         {         printf("opendir failed!");         return 1;         }         else         {         while(entry=readdir(dirptr))         {         printf("filename%d=%s\n",i,entry->d_name);         i++;         }         closedir(dirptr);         }         return 0; }

输出:

filename1=dir1 filename2=file3 filename3=.. filename4=dir3 filename5=. filename6=file1 filename7=file2 filename8=dir2

opendir 、readdir 小结的更多相关文章

  1. 004PHP文件处理——目录操作:glob rewinddir opendir readdir

    <?php /** * 目录操作:glob rewinddir opendir readdir */ //glob 以数组形式返回,参数1这个目录的所有内容,可以置顶返回的具体类型 //只遍历输 ...

  2. php 中 opendir() readdir() scandir()

    opendir(path,context)若成功,则该函数返回一个目录流,否则返回 false 以及一个 error.可以通过在函数名前加上 “@” 来隐藏 error 的输出. readdir() ...

  3. 利用目录函数(opendir,readdir,closedir)查找文件个数

    如何知道一个目录下的所有文件个数呢?或许可以用tree来学(zhuang)习(bi)的同时知道文件个数.Linux系统io函数为我们提供了目录操作函数,其中有一个比较重要(实际上有三个,因为它们经常配 ...

  4. 关于目录的操作|*|<>|opendir |readdir|unlink|find2perl|rename|readlink|oct()|utime

    #!/usr/bin/perl use strict; use warnings; foreach my $arg(@ARGV) { print "one is $arg\n"; ...

  5. GlusterFS常用命令小结

    # /etc/init.d/glusterd start # /etc/init.d/glusterd stop # /etc/init.d/glusterd status 2.       开机自动 ...

  6. 20155325 加分作业 实现pwd

    要求 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 准备 思路 问题 1.如何获取当前目录的节点号 Linux ...

  7. 源码编译安装php

    原文:https://klionsec.github.io/2017/11/23/phpsec/#menu After compile install php 5.3.1, I can not fin ...

  8. php中防止SQL注入的方法

    [一.在服务器端配置] 安全,PHP代码编写是一方面,PHP的配置更是非常关键. 我们php手手工安装的,php的默认配置文件在 /usr/local/apache2/conf/php.ini,我们最 ...

  9. php.ini 安全配置

    (1) 打开php的安全模式 php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/ ...

随机推荐

  1. CentOS重新安装yum

    1.问题描述    有时会出现yum不可用的错误,可以先卸载再重装. 2.操作步骤 (1).下载Python-iniparse-0.4 -9.el7.noarch.rpm (2).下载yum-3.4. ...

  2. 【luoguP2675】《瞿葩的数字游戏》T3-三角圣地

    题目背景 国王1带大家到了数字王国的中心:三角圣地. 题目描述 不是说三角形是最稳定的图形嘛,数字王国的中心便是由一个倒三角构成.这个倒三角的顶端有一排数字,分别是1~N.1~N可以交换位置.之后的每 ...

  3. MySQL Innodb引擎和MyIASM引擎的区别

    Innodb引擎 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别.该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL ...

  4. Linux之GDB调试命令

    gdb启动 gdb 程序名 l 查看源代码(默认显示十行) l 文件名:行数 l 文件名:函数名 添加断点 break + 行数 (b 也行) b 15 if i == 15 条件断点 i b 查看断 ...

  5. 为vue3.0学点typescript, 解读高级类型

    知识点摘要 本节课主要关键词为: 自动类型推断 / 类型断言 / 类型别名(type) / 映射类型(Pick/Record等...) / 条件类型(extends) / 类型推断(infer) 自动 ...

  6. 8.7 JSON存储数据方式(JavaScript对象表示法)

    8.7 JSON存储数据方式(JavaScript对象表示法) JSON JavaScript 对象表示法(JavaScript Object Notation) 是一种存储数据的方式. 一.创建JS ...

  7. ArcGIS Python查看geodatabase(.gdb)版本

    代码:10.0不能运行 import arcpy desc = arcpy.Describe(r'C:\Users\dell\Documents\ArcGIS\default.gdb') print ...

  8. bash脚本获取绝对路径的最后一个目录名称

    比如绝对路径是/root/autoHls/streamID 因为脚本里面想直接用这个streamID来推流 下面是方法 #!/bin/bash dir="/root/autoHls" ...

  9. Java-JVM OutOfMemory 情况(JDK8)

    JVM 运行时内存结构(Run-Time Data Areas) 内存溢出分为两大类:OutOfMemoryError 和 StackOverflowError. 一.HeapOomError (JV ...

  10. Android性能优化-电量优化

    前言 电量优化,这个名词在传统PC时代,我们基本很少听见.然而到了诺基亚时代,我们也同样很少关注.直到了移动互联的智能机时代.电量优化才被慢慢的重视起来.可能的原因如下: 移动设备,不能一直使用电源供 ...