• linux系统下的文件操作


    打开文件

    int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode);

    1. 返回值:文件描述符

    2. pathname: 要打开或创建的目标文件

    3. flags: 打开文件时,可以传入多个参数选项,用下面的一个或者多个常量进行“或”运算,构成flags。

    参数:
    O_RDONLY: 只读打开
    O_WRONLY: 只写打开
    O_RDWR : 读,写打开
    这三个常量,必须指定一个且只能指定一个
    O_CREAT : 若文件不存在,则创建它。需要使用mode选项,来指明新文件的访问 权限
    O_APPEND: 追加写

    关闭文件

    int close(int fd);

    fd:文件描述符

    写文件

    ssize_t write(int fd, const void *buf, size_t count);

    1. fd:文件描述符
    2. buf:向文件写入的指针
    3. count:写入的字节数
    int main()
    {
      int fd = open("log.txt",  O_WRONLY | O_CREAT | O_TRUNC,0666 );
      int count=5;
      char buf[]="这是个测试\n";
      while(count--)
      {
        write(fd,buf,strlen(buf));
      }
      close(fd);
      return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    读文件

    ssize_t read(int fd, void *buf, size_t count);

    1. fd:文件描述符
    2. buf:读取文件的指针
    3. count:读取的字节数`
    int main()
    {
      
      int fd = open("log.txt",  O_RDONLY,0666 );
      char ch[128];
      ssize_t s= read(fd,ch,sizeof(ch)-1);
      if(s>0)
      {
        ch[s]=0;
      }
      printf("%s",ch);
      close(fd);
      return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    文件描述符fd

    Linux进程默认情况下会有3个缺省打开的文件描述符,分别是标准输入0, 标准输出1, 标准错误2.
    0,1,2对应的物理设备一般是:键盘,显示器,显示器

    进程是如何管理打开的文件的?

    在这里插入图片描述
    进程内部有过管理文件指针的数组,当我们增加打开的文件时,就会从头遍历,找到没有使用的下标,分配给新文件
    (注:如果文件关闭的话,下标会被回收,给下一个打开的文件)

  • 相关阅读:
    除静电离子风枪的工作原理及应用
    【打卡】21天学习挑战赛—RK3399平台开发入门到精通-day1
    算法通关村第十八关:白银挑战-回溯热门问题
    Chrome 浏览器+Postman还能这样做接口测试 ?
    后端开发知识图谱
    BDD - SpecFlow Page Object Model POM
    【深度学习】实验09 使用Keras完成线性回归
    python爬虫:bs4库的安装和使用
    GCP认证考试之BigQuery专题
    无胁科技-TVD每日漏洞情报-2022-11-30
  • 原文地址:https://blog.csdn.net/zjq_love/article/details/127413286