`

设置了O_APPEND,lseek的操作将无效

 
阅读更多

下面 的代码说明,设置了O_APPEND,语句“lseek(fd, 0, SEEK_SET)”并没有起到应有的作用

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
int main(int argc, char** argv){
        int fd;
        char* fName = "text.txt";
        if((fd = open(fName, O_CREAT | O_APPEND | O_RDWR)) < 0){
                fprintf(stderr, "open file %s error !\n msg:%s\n", fName, strerror(errno));
                exit(1);
        }
        int num = 10, i;
        for(i = 0; i < num; i++){
                if(lseek(fd, 0, SEEK_SET) < 0){
                        fprintf(stderr, "seek file %s error !\n msg:%s\n", fName, strerror(errno));
                        exit(1);
                }
                char* content = "1";
                if(write(fd, content, 1) < 0){
                        fprintf(stderr, "write file %s error !\nmsg:%s\n", fName, strerror(errno));
                        exit(1);
                }
        }
        exit(0);
}
 
分享到:
评论

相关推荐

    O_APPEND与读操作

    本主题聚焦于`O_APPEND`标志和`lseek`函数在文件访问中的行为,特别是它们如何影响读写操作。 `O_APPEND`是一个在`open`函数中使用的标志,用于指定打开文件的方式。如果设置了这个标志,每次对文件进行写操作(如`...

    blob_append:BLOB_APPEND功能文档

    BLOB_APPEND功能主要涉及到数据库操作,特别是对大对象(Binary Large Object)的数据操作。BLOB类型通常用于存储非结构化的数据,如图片、音频、视频或者任何二进制文件。在本案例中,"blob_append:BLOB_APPEND功能...

    PyPI 官网下载 | fast_append_array-0.1.0.tar.gz

    "fast_append_array-0.1.0.tar.gz"是一个从PyPI官网下载的压缩包,很可能包含了名为`fast_append_array`的Python库,版本号为0.1.0。这个库可能是为了优化数组或列表的追加操作,以提高性能。 Python中的数组操作是...

    fcntl函数的功能介绍

    具体来说,它检查了文件是否被打开为只读、只写或读写模式,并检查了是否启用了追加模式(`O_APPEND`)或非阻塞模式(`O_NONBLOCK`)。 #### 结论 `fcntl`函数提供了丰富的文件描述符管理功能,适用于多种应用场景。...

    inceptor_ora_template_f2_append.sql

    inceptor_ora_template_f2_append.sql

    PHP中auto_prepend_file与auto_append_file用法实例分析

    如果不需要对所有页面都使用auto_prepend_file和auto_append_file,可以针对特定目录使用.htaccess文件来进行设置。在.htaccess文件中,可以使用php_value指令来设置auto_prepend_file和auto_append_file: ...

    Avro C API接口库接口调用示例

    在本示例中,我们将深入探讨Avro C API接口的使用,以及如何通过示例程序`AvroTest`进行接口调用。 1. **Avro数据模型** - Avro的数据模型基于JSON,包括基本类型(如字符串、整型、浮点型)、数组、映射、记录、...

    new_append_passwd.py

    通过此部分小程序可实现通过代码往excel表格中记录一些个人重要的内容。只需按照提示输入内容即可,不用再人工找到表格,打开,写入,保存,关闭等。

    UNIX环境高级编程003

    1. **文件I/O函数**:在UNIX系统中,进行文件I/O操作主要依赖于五个基本函数:open、read、write、lseek和close。这些函数是低级I/O接口,直接与内核交互,执行文件的打开、读取、写入、定位和关闭等操作。它们不...

    linux文件编程演示代码.rar_file操作_linux 文件操作_nearb5p_open

    标志可以是`O_RDONLY`(只读)、`O_WRONLY`(只写)或`O_RDWR`(读写),也可以组合使用`O_APPEND`(追加写入)、`O_TRUNC`(截断文件)等。例如: ```c int fd = open("example.txt", O_RDONLY); ``` 这会以只读...

    log_start.rar_If...

    3. **文件指针**:在`O_APPEND`模式下,`write()`函数会将数据添加到文件的末尾,而不是从当前位置开始。因此,即使多次打开同一个文件并写入,内容也会依次追加。 4. **`open_sccs_log.c`**:此文件名可能表示这是...

    Linux下必用的I/O 操作手段I/O文件

    文件I/O操作是API的一个重要部分,包括打开文件(open)、读取文件(read)、写入文件(write)、改变文件位置(lseek)以及关闭文件(close)等功能。这些函数允许程序与文件系统进行交互,完成数据的读写。 文件描述符是...

    Linux系统程序设计_文件操作例程

    追加模式(O_APPEND)会将写操作添加到文件末尾,而创建新文件(O_CREAT)会在指定路径不存在时新建文件。 8. **文件同步与异步**:fsync()函数用于确保缓冲区中的数据被实际写入磁盘,实现同步;而异步I/O可以通过...

    Linux系统API函数手册.doc

    `open`函数的灵活性使得开发者可以根据具体需求选择不同的文件操作行为,例如,通过设置`O_CREAT`和`O_EXCL`,可以确保文件在创建时是唯一的,避免了覆盖现有文件的可能。同时,通过`O_APPEND`标志,可以在不覆盖...

    操作系统实验十1

    `O_CREAT`用于创建文件,`O_EXCL`与`O_CREAT`配合确保文件唯一创建,`O_TRUNC`用于清空已存在的文件,`O_APPEND`用于追加写入,`O_NONBLOCK`和`O_NDELAY`使打开变为非阻塞模式,`O_SYNC`确保写入同步,`O_NOFOLLOW`...

    APUE(UNIX环境高级编程)——文件I/O篇

    附加选项如`O_APPEND`用于追加写入,`O_CREAT`用于创建新文件(需要提供`mode`参数设置权限),`O_EXCL`确保文件唯一,`O_TRUNC`用于打开文件时清空其内容,`O_NOCTTY`防止分配控制终端。 【原子操作与共享】 在多...

    linux文件IO之整理笔记

    * O_APPEND:每次写时都加到文件的尾端 * O_CREAT:若此文件不存在则创建它 四、read 函数 read 函数用来读取文件的内容。该函数的原型是: `ssize_t read(int fd, void *buf, size_t count);` 其中,fd 是文件...

Global site tag (gtag.js) - Google Analytics