O_APPEND标志

O_APPEND标志也是在open函数中使用的,当我们使用该标志,我们在向打开的文件写入数据时,就会从文件的末尾开始写入。不过它只会影响文件写入的偏移量,读文件时依然从文件开头开始。

下面来看一段示例代码,向大家展示O_APPEND标志的作用。

1 #include <sys/types.h>
2 #include <sys/stat.h>
3 #include <fcntl.h>
4 #include <unistd.h>
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <string.h>
8 int main(int argc, char argv[]) {
9 char buffer[4];
10 int fd;
11 int ret;
12
13 fd = open(argv[1], O_RDWR | O_APPEND); //使用OAPP_END打开要操作的文件
14 if (-1 == fd) {
15 perror(“open error”);
16 exit(-1);
17 }
18
19 memset(buffer, 0x11, sizeof(buffer)); //将buffer中的数据初始化为0x11
20
21 ret = write(fd, buffer, 4); //向打开的文件中写入4个字节的数据
22 if (-1 == ret) {
23 perror(“write error”);
24 goto err;
25 }
26
27 memset(buffer, 0x00, sizeof(buffer)); //将buffer中的数据清零
28
29 ret = lseek(fd, -4, SEEK_END); //将位置偏移量移动到文件末尾前4个字节处
30 if (-1 == ret) {
31 perror(“lseek error”);
32 goto err;
33 }
34
35 ret = read(fd, buffer, 4); //读取四个字节的数据
36 if (-1 == ret) {
37 perror(“read error”);
38 goto err;
39 }
40 printf(“0x%x 0x%x 0x%x 0x%x\n”, buffer[0], buffer[1],buffer[2], buffer[3]);
41 ret = 0;
42 err:
43 /
关闭文件 */
44 close(fd);
45 exit(ret);
46 }

接下来执行上面的程序看下打印的结果,如下图所示。可以看到文件最后4个字节的数据确实是我们写入的0x11。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小菜鸡叶不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值