文档章节

dirent相关

xueyi28
 xueyi28
发布于 2016/05/22 15:57
字数 215
阅读 3
收藏 0
点赞 2
评论 0

主要包括两个文件:/usr/include/dirent.h  和/usr/include/bits/dirent.h

struct dirent
  {
#ifndef __USE_FILE_OFFSET64
    __ino_t d_ino;
    __off_t d_off;
#else
    __ino64_t d_ino;
    __off64_t d_off;
#endif
    unsigned short int d_reclen;
    unsigned char d_type;
    char d_name[256];       /* We must not include limits.h! */
  }; 

相关文件类型说明:

enum
  {
    DT_UNKNOWN = 0,
# define DT_UNKNOWN DT_UNKNOWN
    DT_FIFO = 1,
# define DT_FIFO    DT_FIFO
    DT_CHR = 2,
# define DT_CHR     DT_CHR
    DT_DIR = 4,
# define DT_DIR     DT_DIR
    DT_BLK = 6,
# define DT_BLK     DT_BLK
    DT_REG = 8,
# define DT_REG     DT_REG
    DT_LNK = 10, 
# define DT_LNK     DT_LNK
    DT_SOCK = 12, 
# define DT_SOCK    DT_SOCK
    DT_WHT = 14
# define DT_WHT     DT_WHT
  }; 

其中有一些type我知道,但是一些我还不了解,在实际中,d_name老是不显示出来,不知道是什么原因:

测试程序:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/stat.h>
#include <errno.h>
void printdir(char *dir, int depth) {
struct dirent *entry;
DIR *dp;
struct stat statbuf;
dp = opendir(dir);
if (dp == NULL) {
perror("opendir error");
}
// chdir(dp);
entry = readdir(dp);
printf("%d,  %d,   %s\n", entry->d_reclen, entry->d_type, entry->d_name);
}
int main(int argc, char* argv[])
{
char *dir = ".";
if (argc == 2) {
dir = argv[1];
printdir(dir, 0);
}


return 0;
}


© 著作权归作者所有

共有 人打赏支持
xueyi28
粉丝 7
博文 88
码字总数 33322
作品 0
南宁
Linux下DIR,dirent,stat等结构体详解

Linux下DIR,dirent,stat等结构体详解 最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。 首先说说DIR这一结构体,以下为DIR...

天朝惘民 ⋅ 2012/10/09 ⋅ 0

Linux文件系统之sysfs

一:前言 在设备模型中,sysfs文件系统用来表示设备的结构.将设备的层次结构形象的反应到用户空间中.用户空间可以修改sysfs中的文件属性来修改设备的属性值,今天我们就来详细分析一下,sysfs的实...

sflfqx ⋅ 2013/04/11 ⋅ 0

Linux下DIR,dirent,stat等结构体详解

最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。 首先说说DIR这一结构体,以下为DIR结构体的定义: struct dirstream { voi...

突然帅了 ⋅ 2014/04/15 ⋅ 0

linux目录编程:DIR,stat, dirent结构体解析与应用

在Linux中,“一切都是文件”。对文本文件编程我应用的比较多,但是对目录文件的操作涉及的比较少。在对目录编程中,会用到DIR,stat, dirent这些结构体,下面就介绍他们的一些基本信息和应用...

li_wen01 ⋅ 2017/11/05 ⋅ 0

SylixOS文件状态获取

文件状态介绍 SylixOS中文件的状态信息包含在stat结构体中,其中包含了文件大小,设备标识符,用户标识符,用户组标识符,文件模式,扩展属性,文件读取或修改的时间戳,链接数量,指向存储该...

时尚小乌龟 ⋅ 2017/05/16 ⋅ 0

一个linux下遍历目录的程序,其中为什么调用chdir()

#include include include include include include void printdir(char *dir,int depth){ DIR *dp; struct dirent *entry; struct stat statbuf; if((dp=opendir(dir))==NULL){ fprintf(std......

zp37 ⋅ 2017/02/10 ⋅ 3

文件系统--procfs中进程目录的问题

procfs是一个特殊的文件系统,和sysfs一样,它是一个只有在你看的时候才会存在的文件系统,它们一样都是用来进行内核-用户态通信的,它们和netlink或者syscall的区别在于它们是文件的方式,大...

晨曦之光 ⋅ 2012/04/10 ⋅ 0

Linux下遍历打印目录

stat, lstat用以判断文件属性(link?direcotry?or other?) opendir, readdir用以遍历目录 主要数据结构struct dirent, DIR, struct stat /** traverse_dir.c traverse a directory, print ou......

ChenQi ⋅ 2012/06/01 ⋅ 0

ls命令实现分析

一、ls命令的功能分析 使用man ls命令查看ls命令手册(功能描述和主要选项摘录如下): List information about the FILEs (the current directory by default).Sort entries alphabeticall...

宅蓝三木 ⋅ 2014/04/24 ⋅ 0

Linux 系统编程笔记

Linux/Unix常用底层库 unistd.h unix standard stdlib.h standard library fcntl.h file control sys.h system stdio.h standard input/output dirent.h directory entries string.h string ......

海涛 ⋅ 2016/08/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 52分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部