码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux:文件操作(open、write/read、lseek、close)


    1. /*
    2. path:被打开文件的(相对或绝对)路径
    3. flag:指定打开文件的方式
    4. O_RDONLY 只读模式
    5. O_WRONLY 只写模式
    6. O_RDWR 读写模式
    7. O_APPEND 每次写操作都写入文件的末尾
    8. O_CREAT 如果指定文件不存在,则创建这个文件
    9. O_EXCL 如果要创建的文件已存在,则返回 -1,并且修改 errno 的值
    10. O_TRUNC 如果文件存在,并且以只写/读写方式打开,则清空文件全部内容
    11. O_NOCTTY 如果路径名指向终端设备,不要把这个设备用作控制终端。
    12. O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继I/O设置为非阻塞模式(nonblocking mode)。
    13. //以下用于同步输入输出
    14. O_DSYNC 等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待文件属性更新。
    15. O_RSYNC read 等待所有写入同一区域的写操作完成后再进行
    16. O_SYNC 等待物理 I/O 结束后再 write,包括更新文件属性的 I/O
    17. mode:
    18. */
    19. fd = open(path,flag,mode)
    20. /* Move FD's file position to OFFSET bytes from the
    21. beginning of the file (if WHENCE is SEEK_SET),
    22. the current position (if WHENCE is SEEK_CUR),
    23. or the end of the file (if WHENCE is SEEK_END).
    24. Return the new file position. */
    25. extern __off_t lseek (int __fd, __off_t __offset, int __whence) __THROW;
    1. /*================================================================
    2. * Copyright (C) 2022 baichao All rights reserved.
    3. *
    4. * 文件名称:file_oper.cpp
    5. * 创 建 者:baichao
    6. * 创建日期:2022年06月17日
    7. * 描 述:
    8. *
    9. ================================================================*/
    10. #include <iostream>
    11. #include <sys/types.h>
    12. #include <sys/stat.h>
    13. #include <fcntl.h>
    14. #include <unistd.h>
    15. #include <stdlib.h>
    16. int main()
    17. {
    18. char *c = (char *)malloc(5);
    19. int fd = open("data.txt", O_RDWR | O_CREAT | O_TRUNC, 0600);//使用O_CREAT一定要加第三个权限参数(eg:660)
    20. int w_size = write(fd, "01234567890123456789", 20);
    21. if (w_size == -1 || w_size != 20)
    22. {
    23. std::cout << "write file failed." << std::endl;
    24. }
    25. int newOffset = lseek(fd, 9, SEEK_SET);
    26. int r_size = read(fd, c, 5);
    27. if (r_size == -1 || r_size != 5)
    28. {
    29. std::cout << "read file failed." << std::endl;
    30. }
    31. std::cout << c << std::endl;
    32. close(fd);
    33. return 0;
    34. }

    运行结果:

  • 相关阅读:
    ARouter出现 there‘s no route matched in group问题排查
    硅芯思见:关于SystemVerilog中枚举类型中枚举值列表的一些事儿
    IPTV桌面系统建设物料和费用:服务器+软件+电视盒
    [oeasy]python0020换行字符_feed_line_lf_反斜杠n_B语言_安徒生童话
    (附源码)计算机毕业设计SSM教学团队管理系统
    从一到无穷大 #2 优雅的感知与处理Elephant Flows
    数据在内存中的存储——深度解析
    医院药品管理系统丨医药商城系统(Java+Web+MySQL)
    STM32实战总结:HAL之DAC
    java计算机毕业设计家校沟通程序MyBatis+系统+LW文档+源码+调试部署
  • 原文地址:https://blog.csdn.net/weixin_40179091/article/details/125326027
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号