当前位置:  技术问答>linux和unix

有关unix下目录流DIR的问题

    来源: 互联网  发布时间:2016-02-24

    本文导语:  请问有有关目录流DIR这种类型的资料吗?我不知道他究竟是什么结构,具体应该怎么用?谢谢 | 在glibc的源码里定义了(针对unix体系): struct __dirstream   {     int fd;                 ...

请问有有关目录流DIR这种类型的资料吗?我不知道他究竟是什么结构,具体应该怎么用?谢谢

|
在glibc的源码里定义了(针对unix体系):
struct __dirstream
  {
    int fd;                     /* File descriptor.  */

    char *data;                 /* Directory block.  */
    size_t allocation;          /* Space allocated for the block.  */
    size_t size;                /* Total valid data in the block.  */
    size_t offset;              /* Current offset into the block.  */

    off_t filepos;              /* Position of next entry to read.  */

    __libc_lock_define (, lock) /* Mutex lock for this structure.  */
  };

DIR类型对用户来讲是不可见的,因为对于不同系统其结构有可能不一样。
之所以没有实际的定义编译还可以通过,那就不太清楚了。

|
去下一个glibc的原代码,dirstream.h中有这个结构的定义:

struct __dirstream
  {
    int fd;                     /* File descriptor.  */

    char *data;                 /* Directory block.  */
    size_t allocation;          /* Space allocated for the block.  */
    size_t size;                /* Total valid data in the block.  */
    size_t offset;              /* Current offset into the block.  */

    off_t filepos;              /* Position of next entry to read.  */

    __libc_lock_define (, lock) /* Mutex lock for this structure.  */
  };

|
相关函数:open,opendir,closedir,rewinddir,seekdir,telldir,scandir
表头文件:#include  
               #include  
定义函数: struct  dirent  *readdir(DIR *dir)
函数说明: readdir()返回参数dir目录流的下个目录进入点。结构dirent定义如下:
struct  dirent
{
    ino_t  d_ino;
    ff_t   d_off;
    signed  short int  d_reclem;
    unsigned  char  d_type;
    char   d_name[256];
}

d_ino           此目录进入点的inode
d_off           目录文件开头到此目录进入点的位移
d_reclen       _name的长度,不包含NULL字符
d_type         d_name所指的文件类型
d_name        文件名

返回值:成功则返回下个目录进入点。有错误发生或读取到目录文件尾则返回NULL
附加说明: EBADF参数dir为无效的目录流

范例:
/* 读取/etc/rc.d目录文件结构,然后显示该目录下的文件 */

#include  
#include  
#include  

main()
{
     DIR  *dir;
     struct  dirent  *ptr;
     int  i;

     dir=opendir("/etc/rc.d");
     while((ptr=readdir(dir)) != NULL)
     {
          printf("d_name: %sn", ptr->d_name);
     }
     closedir(dir);


    
 
 

您可能感兴趣的文章:

  • 急问个问题可能与目录权限有关
  • Linux的交换分区与/tmp目录有关系么?
  • (菜鸟问题)有关目录中文件执行的问题???
  • linux 中目录权限的有关问题
  • 有关目录操作的问题
  • 有关c#操作目录-文件-字符串的类
  • 求教有关smartupload的问题,有关就给分!!
  • 有关在sco unix5.0.4下有关网卡设置的问题(非常急,高分相送)
  • 有关snmp的一个很菜,但是困扰了我很久的问题,有关工作原理的,望大家赐教
  • 有关ResultSet的问题,帮助解决问题者另外加分...
  • 有关Qt下编译的环境问题
  • 有关裁减内核及shell命令的问题
  • 有关cocoon的问题??
  • Helper! 有关Jbuilder使用问题???
  • 有关swing的问题,请高手回答
  • 一个有关分数的问题
  • 有关pcmaclan的打印机共享问题
  • 请教有关samba共享名大小写的问题
  • 想看一下吗?有关swing 组件的问题?
  • 有关L的问题(菜鸟求教)???
  • 有关jsp服务器的一个问题
  • java 进阶级问题,有关网络的问题,请多多帮助
  • 有关Liunx 的最低配置问题
  • 有关环境的问题
  • 请教有关konqueror 问题?
  • 有关文件路径的简单问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ​有关Docker的八个令人难以置信的事实
  • 有关内码转换(跟HttpServletRequest有关)
  • 求有关png图像处理的libpng库的有关中文资料
  • 大家推荐一下有关LINUX7有关的网络编程的书。最好是比较全面的!比较经典的。
  • 有关KDevelop-3.0.4-0.1.i386.rpm的有关软件包
  • 有关KDevelop编程的资料
  • 有关集群与数据同步
  • 请教有关英文简历方面的词句!
  • 有关报表打印(在JAVA,WEB下应用)急用!
  • 请各位大哥告知JAVA中消息机制的有关资料,拜托!
  • 有关jbuilder
  • 我想看看有关Linux和Unix的源码,有什么好的建议
  • 有关J2ME的帮助文档!
  • 100分求助 能不能提供一些有关图像分割的算法和实现代码!谢谢
  • 在哪里可以弄到有关tomcat配置方面的资料?
  • 请问哪里有jboss有关配置的教程,最好是中文的,先谢了
  • 哪位兄弟知道有关QT的资料可以下,,谢谢!
  • 有关学习java的电子图书网址
  • 请介绍一本有关i386体系结构、汇编的书。
  • 有关shell返回值
  • 高分请教:请问怎么才能得到最近所有有关文件操作(新建,删除等)的记录


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3