结构体dirent:

struct dirent
{
ino_t d_ino; //inode number
off_t d_off; //offset to the next diret
unsigned short d_reclen; //length of this record
unsigned short d_type; //type of file
char d_name[]; //filename
}

结构体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. */
} DIR;

opendir函数

#include<diret.h>
DIR* opendir(const char *path)

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

opendir函数打开一个与给定名的目录名name相对应的目录流,并返回一个指向该目录流的指针。打开后,该目录流指向了目录中的第一个目录项。若打开成功,则返回指向目录流的指针打开失败,返回NULL,并设置相应的错误代码errno

readdir函数

struct dirent *readdir(DIR *dir)

readdir函数返回一个指向dirent结构体的指针,该结构体代表了由dir指向的目录流中的下一个目录项;如果读到end-of-file或者出现错误,那么返回NULL。

该函数返回的值会被后续调用的(针对同一目录流)readdir函数返回值所覆盖

函数调用成功会返回一个指向dirent结构体的指针,失败时或读到end-of-life时,返回NULL,并且设置相应的错误代码errno。

closedir函数

int closedir(DIR *dir);

closedir函数关闭与指针dir相联系的目录流,关闭后目录流描述符dir不可再用。函数成功时返回0,失败时返回-1并设置了相应的错误代码errno

chdir、fchdir函数

int chdir(const char *path)
int fchdir(int fd)

chdir函数改变当前的工作目录位path指定的目录。

fchdir函数和chdir功能一样,唯一的区别就是fchdir所改变的工作目录由打开的文件描述符所指定。

opendir,readdir,closedir的更多相关文章

  1. 目录文件的操作函数 mkdir ,opendir,readdir,closedir

    1.  int mkdir(const char *pathname, mode_t mode);   头文件 :<sys/stat.h>  <sys/types.h> 功能: ...

  2. oendir(),readdir(),closedir() 打开/读取/关闭目录

    目录操作 当目标是目录而不是文件的时候,ls -l的结果会显示目录下所有子条目的信息,怎么去遍历整个目录呢?答案马上揭晓! 1. 打开目录 功能:opendir()用来打开参数name指定的目录,并返 ...

  3. 目录操作函数opendir、readdir和closedir

    首先,明确一个类型DIR的含义: #include <dirent.h> DIR    A type representing a directory stream. DIR是在目录项格式 ...

  4. 逆天通用水印支持Winform,WPF,Web,WP,Win10。支持位置选择(9个位置 ==》[X])

    常用技能:http://www.cnblogs.com/dunitian/p/4822808.html#skill 逆天博客:http://dnt.dkil.net 逆天通用水印扩展篇~新增剪贴板系列 ...

  5. MySQL主从环境下存储过程,函数,触发器,事件的复制情况

    下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆. 首先,创建一张测试表 mysql),age int); Query OK, rows affe ...

  6. Oracle安装部署,版本升级,应用补丁快速参考

    一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...

  7. Syscall,API,ABI

    系统调用(Syscall):Linux2.6之前是使用int0x80(中断)来实现系统调用的,在2.6之后的内核是使用sysentry/sysexit(32位机器)指令来实现的系统调用,这两条指令是C ...

  8. 【夯实PHP基础】PHP数组,字符串,对象等基础面面观

    本文地址 分享提纲 1.数组篇 2.字符创篇 3.函数篇 4.面向对象篇 5.其他篇 /*************************** 一.数组篇 Begin***************** ...

  9. MSSQL 事务,视图,索引,存储过程,触发器

    事务 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行. 在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的.这特别适用于多用户同时操作的数据 ...

随机推荐

  1. Spring AOP 创建Advice 基于Annotation

    public interface IHello { public void sayHello(String str); } public class Hello implements IHello { ...

  2. 使用jQuery开发tab选项卡插件

    为了复习巩固jQuery的插件开发.HTML和CSS方面的知识,做了一个简单的tab选项卡插件,简单记录一下开发.使用的过程,以备日后使用. 一.插件效果 tab选项卡插件常用的功能均已实现,包括:动 ...

  3. MySql注释的写法

    每一种语言都有它的注释方式,代码量少的时候还可以,随着代码量越来越多,代码注释的重要性也越发凸显. 在mysql中主要有三种方式: 1.常用的方式,跟在css中那些注释一样 :/* 内容 */ /* ...

  4. Availability-group DDL operations are permitted only when you are using the master database. Run the USE MASTER command, and retry your availability-group DDL command.

    Question: SQL SERVER  alwayson在向AG中添加DB最后一步在副本中将此DB添加入AG时报错: Availability-group DDL operations are p ...

  5. sqoop 导入增量数据到hive

    版本 hive:apache-hive-2.1.0 sqoop:sqoop-1.4.6 hadoop:hadoop-2.7.3 导入方式 1.append方式 2.lastmodified方式,必须要 ...

  6. [bluez] linux下蓝牙鼠标的延迟问题

    引言 现在的便携设备,接口越来越少了.所以我们没有理由不用蓝牙鼠标.高大上也不贵. 蓝牙4.0之前,蓝牙设备的问题是特别费电.蓝牙4.0之后省电的要命,我的上一个鼠标Microsoft Designe ...

  7. 在openwrt上使用autossh(已放弃)

    用了一天后发现,这东西真不靠谱,还不如自已写的SHELL检测重连来的精准和方便,放弃中 参考文章: https://my.oschina.net/umu618/blog/849345 https:// ...

  8. sklearn 翻译笔记:KNeighborsClassifier

    今天做机器学习knn的实现想使用sklearn这个模块,但是里面的函数不懂,无奈只能查文档,但是一大片英文看见我就烦,也不是说不能看  但是以我低下的英语水平实在是太费劲了.幸好找到一篇前人翻译的比较 ...

  9. Linux 逻辑卷扩容

    Linux 逻辑卷扩容 关键词:pv(物理卷).vg(卷组) .lv(逻辑卷) 今天在用linux过程中,根分区容量不够了,突然想起来好久没更新博客,就来说说逻辑卷扩容的问题吧. 1.扩容前的检查 记 ...

  10. rest-framework认证、权限组件

    认证组件: models class User(models.Model): username = models.CharField(max_length=32) password = models. ...