zoukankan      html  css  js  c++  java
  • lseek、stat、access、chmod、strtol、truncate、unlink

    lseek,可实现计算文件长度,以及文件扩展。

        int ret = lseek(fd, 0, SEEK_END);    //文件长度
        printf("file lendth = %d
    ", ret);
        int ret = lseek(fd, 2000, SEEK_END);        //文件拓展2000个byte 在文件末尾偏移2000
        printf("return value %d
    ", ret);
        
        //实现文件拓展,需要在最后做一次写操作
        write(fd, "a", 1);
      //最后有原长度加2001大小 a在最后其余为空洞

    stat,显示文件的基础信息,可作为命令使用(stat english    显示english文件的信息)

      头文件:<sys/types.h> <sys/stat.h> <unistd.h>

      函数有:int stat(const chat *path, struct stat *buf);  //buf为传出参数  由于函数向外输出相应信息

          int fstat(int fd, struct stat *buf);

          int lstat(const char *path, struct stat *buf);

      stat与lstat的区别是,stat遇到软连接时追踪原文件,显示原文件的大小。lstat显示软连接的大小。

    struct stat{
        dev_t    st_dev;//文件的设备标号
        ino_t    st_ino;//节点
        mode_t    st_mode;//文件类型和储存权限
        nlink_t    st_nlink;//硬链接数目
        uid_t    st_uid;//用户ID
        gid_t    st_gid;//组ID
        .....
    }

    access,测试文件是否拥有某种权限,读、写、执行、是否存在

      头文件:<unistd.h>

      函数:int access(const char  *pathname, int mode);

      mode, R_OK是否读、W_OK是否写、X_OK是否可执行、F_OK是否存在

      存在为0,失败为-1

    chmod,修改文件权限。详情见man文档

    strtol,将字符串转换为相应进制的数

      <stdlib.h>

      long int strtol(const char *nptr, char **endptr, int base);

      nptr为字符串,endptr通常为空,base为想要转成的进制

    chown,修改文件所有者

      

    truncate,专门由于拓展文件

      int truncate(const char *path, off_t length);

      int ftruncate(int fd, off_t length);

      length,当小于文件长度时街截取文件,保持length大小。大于文件长度时,拓展文件,空洞补填

    link,创建一个硬链接,

      int link(const char *oldpath, const char *newpath);

    symlink,创建软连接,参数一侄

    unlink,删除链接,创建/删除临时文件

      先用open创建文件open("tempfile", O_CReaT | O_RDWR, 0664);

      在文件关闭前调用unlink("tempfile");

      当文件被关闭时文件就会被删除,文件处于打开状态时无法被删除,关闭后被unlink

      

  • 相关阅读:
    Vue-发布订阅机制(bus)实现非父子组件的传值
    01. jupyter环境安装
    人工智能
    Javascript
    JavaScript
    MongoDB
    MongoDB
    人工智能
    Flask
    Flask
  • 原文地址:https://www.cnblogs.com/lr1402585172/p/10482200.html
Copyright © 2011-2022 走看看