• linuxC文件以及目录操作函数


    opendir    --打开目录,返回DIR*指针,man 3 opendir 查看介绍,下面查看方法类似
    readdir   --读取目录,返回struct dirent*结构体指针(dir entry)
    closedir  --关闭目录DIR*
    getcwd  --获取当前工作目录

    下面是文件有关的函数:
    stat  --获取文件属性,返回struct stat结构体,包括文件类型,大小修改时间,权限,用户id等等。能够透过符号链接
    lstat  --类似stat,但是不能透过符号链接,也就是说如果是符号链接,就只是读到符号链接属性,不能读取到真实文件属性
    access  --判断文件是否有某个权限(R_OK, W_OK, X_OK),也可以使用判断文件是否存在(F_OK)
    chmod  --改变文件权限,第二个参数mode必须是一个8进制数,比如0755
    chown  --改变文件所有者
    rename  --重命名文件
    truncate  --截取文件为指定长度,指定长度为0时,清空文件内容。
    link  --创建一个硬链接,
    symlink  --创建一个符号链接
    readlink  --读取一个符号链接名称,是文件名称,不是文件内容,不能读取硬链接
    unlink  --删除链接,如果是符号链接,直接删除符号链接。如果是硬链接,硬链接数减1,硬链接数为0时删除链接,所有也是删除文件的一种方法。注意:进程退出后才会真正的删除。
    unlink由于需要等到进程退出后才会真正执行删除,所有一般用于删除程序运行时产生的临时文件,程序退出后,临时文件自动删除这个场景。

    int fd = open("filename", O_CREAT | O_RDWR, 0755);  --打开一个文件,不存在时自动创建该文件,返回一个文件描述符
    char* p= "this is test file ";
    write(fd, p, strlen(p));  -- strlen计算字符串长度,write写入文件
    close(fd);  --关闭文件

    fcntl函数:man 3 fcntl查看文档
    int fcntl(int fd, int cmd);
    int fcntl(int fd, int cmd, long arg);
    int fcntl(int fd, int cmd, struct flock *lock);
    cmd有以下几种情况:
      复制文件描述符  -- F_DUPFD
      文件描述符标记  -- F_GETFD、F_SETFD
      文件状态     -- F_GETFL、F_SETFL
      异步IO所有权   -- F_GETOWN、F_SETOWN (man 3 open 可在open函数里查看所有权限)
      文件记录锁    -- F_GETLK、F_SETLK、F_SETLKW

      int flags = fcntl(fd, F_GETFD);
      flags |= FD_CLOEXEC;  //设置执行exec系列函数时自动关闭fd文件描述符
      fcntl(fd, F_SETFD, flags)









  • 相关阅读:
    Avizo
    NEWS
    HOWTO
    InstallShield 2012 Spring优惠升级到最新版本(2015.4.30之前)
    Windows系统补丁KB2962872导致InstallShield无法启动(解决方案已更新)
    HOWTO: InstallScript MSI工程取Log
    安装软件列表
    阿里云推荐码 hut29f
    ios 缺少合规证明
    ios开发错误之: Undefined symbols for architecture x86_64
  • 原文地址:https://www.cnblogs.com/yongfengnice/p/11809334.html
Copyright © 2020-2023  润新知