zoukankan      html  css  js  c++  java
  • 目录操作的一些函数理解

    1.readlink(pathnam,buf,size)

      参数:pathname是一个链接文件名,

      功能:该函数的功能是将pathname文件中的路径读到buf中,一共可读size个大小

    2.getcwd(buf,zise)

      功能:获取当前路径到buf中;

    3.chdir(path)

      功能:改变当前的工作路径为path;

    4.目录操作的打开、读、关闭操作

      4.1opendir(path)

        DIR *dp;//目录流指针

        dp=opendir(path)//打开目录函数返回的是一个目录流指针,指向目录的第一    个元素(类似于文件描述符);

      4.2 readdir(dp)

        struct dirent *ent;//存放读取目录项信息的结构体指针

        ent=readdir(dp);//通过dp读到的信息存放在ent指针指向的变量中,可以通过    while(1)循环依次读取。

        /////////////////////////////////////////

        这个结构与实现有,但互少会包含前两个成员
         struct dirent {
           ino_t          d_ino;       /* inode number */
           char           d_name[256]; /* filename */
           off_t          d_off;       /* offset to the next dirent */
           unsigned short d_reclen;    /* length of this record */
           unsigned char  d_type;      /* type of file */
            };

      4.3 closedir(dp)//关闭目录文件

    5.getpwnam(const char *name)

    //  struct passwd {
                   char   *pw_name;       /* username */
                   char   *pw_passwd;     /* user password */
                   uid_t   pw_uid;        /* user ID */
                   gid_t   pw_gid;        /* group ID */
                   char   *pw_gecos;      /* user information */
                   char   *pw_dir;        /* home directory */
                   char   *pw_shell;      /* shell program */
               };

      struct passwd *pw;

      pw=getpwnam(*name)//通过用户名在passwd中找到用户的信息,返回一个结构体指针。通过pw可以访问结构体内的任何信息。

    6.getpwent(void)

      返回值:为一个struct passwd 类型的结构体指针;

      功能:遍历出passwd  database中所有信息,而上个getpwnam()只找出与参数相同的变量的结构体指针。

    与它配合使用的还有:

      void  setpwent(void);//指针回到文件头

      void endpwent(void);//function  is used to close the password database after
           all processing has been performed.

    7.文件截短:

      int truncate(*path,off_t length);

      int ftruncate(int fd,off_t length);

      这两个函数将原函数截短为length长度,截短后的文件内容将不能再被读取,文件的大小改变,但是文件的指针并没有发生偏移,依然在原来的文件尾。  如果length的长度比原来长,则在原文件尾端和新文件尾端被读为0,(文件空洞)

    8.权限

      mode_t   mode;

      sscanf(argv[1],"%o",&mode);//数字字符串转换为8进制

      chomd(argv[2],mode)//改变文件argv[2]的权限。

    9.删除函数

      unlink(*pathname)//如果该文件没有进程使用,且链接数为0,则删除该文件

      rmdir()//用于删除目录

      remove()//遇见文件则电泳unlink(),遇见目录则调用rmdir();

    10.stat(pathname,struct stat *restrict buf)//返回与此命名文件有关的信息结构

          fstat(int filedes,struct stat *buf)//返回已经打开文件的信息结构

       lstat(const char *restrict pathname,struct stat *restrict buf)//不跟随函数,如果是一个链接文件名,返回该链接文件的信息;

     struct stat {
                   dev_t     st_dev;     /* ID of device containing file */
                   ino_t     st_ino;     /* inode number */
                   mode_t    st_mode;    /* protection */
                   nlink_t   st_nlink;   /* number of hard links */
                   uid_t     st_uid;     /* user ID of owner */
                   gid_t     st_gid;     /* group ID of owner */
                   dev_t     st_rdev;    /* device ID (if special file) */
                   off_t     st_size;    /* total size, in bytes */
                   blksize_t st_blksize; /* blocksize for file system I/O */
                   blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
                   time_t    st_atime;   /* time of last access */
                   time_t    st_mtime;   /* time of last modification */
                   time_t    st_ctime;   /* time of last status change */
               };

  • 相关阅读:
    人脸识别员工考勤系统
    栈和队列
    线性表
    C语言博客作业02--循环结构
    课程设计-个人博客
    C博客作业02--循环结构
    博客作业--函数
    c博客作业
    联系方式
    专业特长
  • 原文地址:https://www.cnblogs.com/edan/p/8868083.html
Copyright © 2011-2022 走看看