zoukankan      html  css  js  c++  java
  • 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)









  • 相关阅读:
    Ubuntu Server中怎样卸载keepalived
    Winform中实现ZedGraph滚轮缩放后自动重新加载数据
    Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限
    C#中获取多个对象list中对象共有的属性项
    Windows7中启动Mysql服务时提示:拒绝访问的一种解决方式
    八、子查询实践
    四、bootstrap-Table
    二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增
    一、动词、名词、形容词汇位置
    三、TortoiseSVN 单独拉取项目某个文件
  • 原文地址:https://www.cnblogs.com/yongfengnice/p/11809334.html
Copyright © 2011-2022 走看看