1 O_APPEND的含义是在每次写之前,都讲标志位移动到文件的末端。表面上读这句话可能会有误解,提出一个问题:
当在O_APPEND打开后,然后用lseek移动到其他的位置,然后再用write写,这个时候,请问你数据写到哪里去了?是在末端,还是lseek移动到得位置。
答案是在末端,因为O_APPEND打开后,是一个原子操作:移动到末端,写数据。这是O_APPEND打开的作用。中间的插入时无效的。
例如 :
int fd = open("test.txt",RDWR | O_APPEND);
lseek(fd,10,SEEK_SET);
if(write(fd,buffer,strlen(buffer)) !=strlen(buffer))
{
perror("write error");
exit(1);
}
read(fd,buffer,20);
这里lseek是没有用的,write的写入是到末端的。在write写完后,标志位是在文件末端的,这个时候的读是不会读的,所以以前的lseek是没有用的,除非你读之前再lseek一次。
这里的read讲不会读出 任何数据,因为在末尾。它还是保持原来的写入的数据。
2 在read读出数据的时候,要明白一个问题。read读出的数据大部分情况下,不是以0结尾的。这样就造成了一种情况,你要输出读出数据的时候,就会出现问题,因为puts,printf函数都是以0作为输出结束符的。就出出现前面的字符是你想看到的,后面的大部分是乱码.
而对于fgets等函数,会在末尾自动加0

O_APPEND的含义相关推荐

  1. UNIX再学习 -- 文件I/O

    上一篇讲完文件描述符,接下来进入正题,文件的处理函数. 一.函数 open 详细内容,可自行 man creat 查看 #include <sys/types.h> #include &l ...

  2. Java Calendar.add()方法的使用,参数含义。指定时间差。

    cal.add()方法中的参数含义: 第一个参数如果是1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作. 第 ...

  3. 通俗理解tf.nn.conv2d() tf.nn.conv3d( )参数的含义 pytorhc 卷积

    20210609 例如(3,3,(3,7,7))表示的是输入图像的通道数是3,输出图像的通道数是3,(3,7,7)表示过滤器每次处理3帧图像,卷积核的大小是3 x 7 x 7. https://blo ...

  4. 三维刚体变化中Rcw,tcw的含义

      高翔博士的<视觉SLAM十四讲>中,介绍Tcw指从世界坐标w到c的变换矩阵.但研一学机器人学的时候,讲T12的含义是,坐标系2相对于坐标系1的变换.于是一脸懵逼.昨天想了一晚上,有了一 ...

  5. 在建工程费用化处理_未确认融资费用和未实现融资收益的含义和区别

    在融资的过程中,可能会涉及到未确认融资费用和未实现融资收益的概念.那这两者分别是什么含义呢?又有什么区别?下面大家和小编一起来看看两者之间的关系,希望能够帮助到大家. 未实现融资收益是指未收到租金并未 ...

  6. inum在linux中含义,linux

    Linux 1.  用户,应用层(图形界面),Shell层(Shell层),内核层(系统调用),硬件 2.X Window系统(协议)特点:独立与操作系统 ,网络特性(可以选择语言),源代码免费 3. ...

  7. 龙格-库塔法(runge-kutta)matlab代码及含义,龙格-库塔法(Runge-Kutta)matlab代码及含义...

    龙格-库塔法(Runge-Kutta)matlab代码及含义 龙格-库塔法(Runge-Kutta) 数值分析中,龙格-库塔法(Runge-Kutta)是用于模拟常微分方程的解的重要的一类隐式或显式迭 ...

  8. java中数组的含义_数组

    数组(Array)是有序的元素序列.[1] 若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量.用于区分数组的各个元素的数 ...

  9. 记java关键词_Java关键词及含义

    关键字          含义 abstract      表明类或者成员方法具有抽象属性 assert          断言,用来进行程序调试 boolean      基本数据类型之一,声明布尔 ...

最新文章

  1. Centos挂载新硬盘开机自动挂载
  2. 农村这么好,为什么感觉大家都不想在农村生活呢?
  3. 2月第3周业务风控关注|上海网信办复测23个被约谈APP 涉及1号店、小红书等
  4. 【UIKit】键盘设计2
  5. mysql connector/c++ 存储过程的调用_MySQL Connector C++ 调用存储过程
  6. Windows Server AppFabric安装教程
  7. 看看世界各地牛人的彪悍乘车功夫
  8. 解决网页pdf禁止打印的方案
  9. 洛谷 桶哥的问题——吃桶——题解
  10. HTB-Apocalyst
  11. spring mvc 404 报错记录
  12. 服务器集群环境下session的共享问题
  13. week1:History: Dawn of Electronic Computing
  14. Vue中的过滤器(管道)
  15. python字符串算式加减运算(Python字符串运算)
  16. DirectX游戏开发之3D角色动起(下)
  17. 车联网行业No.1元征科技的云端架构实现 1
  18. Win10家庭版开启Administrator超级管理员账号 + Win10将中文用户文改为英文名
  19. 浅学了一下销售订单和交货单的关系和创建(小白莫喷)
  20. VM虚拟机+本地服务器+配置静态IP+宝塔面板(详细过程)

热门文章

  1. pandas将dataframe的所有数据列的名称转化为大写形式(all column labels in dataframe to uppercase)
  2. ExecuteNonQuery方法和ExecuteScalar方法的区别
  3. 如何启动Android SDK 1.5模拟器
  4. 一个网站域名价值 1亿人民币,互联网寸土寸金!
  5. 创业结束后三年 我当员工的心得(翻译版本)
  6. 记一款游戏--《程序员升职记》
  7. EAS BOS锚定设置
  8. lib lib32 lib64等lib文件夹的说明
  9. HTML JavaScript
  10. 基于FPGA的直接数字频率合成器的的设计和实现设计和实现