read和write函数

2023-11-19

/*
//read
    ssize_t read(int fd, void *buf, size_t count);
    -fd:文件描述符,通过open获得
    -buf:需要读取的数据的存放位置,数组的地址
    -count:指定数组的大小

    返回值:
        -成功
            >0:返回实际读取到的字节数
            =0:读取到文件末尾
        
        -失败
            -1


    //write
    ssize_t write(int fd, void *buf, size_t count);
    返回值:写入文档的字节数(成功);-1(出错)
*/

#include <unistd.h> //read
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(){
    //1.打开要复制的文件
    int srcfd = open("from.txt", O_RDONLY);
    if(srcfd == -1) {
        perror("open file error");
        return -1;
    }

    //2.创建新文件
    int destfd = open("to.txt", O_WRONLY | O_CREAT, 0664);
    if(destfd == -1) {
        perror("create new file error");
        return -1;
    }

    //3.频繁读写
    char buf[1024] = {0};//数组
    int len = 0;

    while((len = read(srcfd, buf, sizeof(buf))) > 0) {
        write(destfd, buf, len);
        printf("per read length:%d\n",len);//此例子文件内容长度小于设置的1024大小,所以就一次读写
    }

    //4.在新文件末尾追加内容
    int appendfd = open("to.txt", O_WRONLY | O_APPEND);

    if(appendfd == -1) {
        perror("append error");
        return -1;
    }

    char append[1024] = {"hello,world!\n"};
    
    int appendwrite = write(appendfd, append, sizeof(append));
    if(appendwrite == -1) {
        perror("append write error");
        return -1;
    }

    //5.关闭文件
    close(appendfd);
    close(destfd);
    close(srcfd);


    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

read和write函数 的相关文章

随机推荐

  • 给出三个整数,判断大小

    7 2 比较大小 给出三个整数 判断大小 输入格式 给出三个整数a b c 输出格式 在一行中依次从小到大的顺序输出 两数之间有一个空格 无多余空格 输入样例 在这里给出一组输入 例如 2 1 5 输出样例 在这里给出相应的输出 例如 1
  • 串口接收中断进不去,如何解决

    串口配置代码 void USART Configuration void GPIO InitTypeDef GPIO InitStructure USART InitTypeDef USART InitStructure RCC APB2P
  • 自动化软件测试流程的七个步骤包括哪些内容

    自动化测试一般是指软件测试的自动化技术 自动化软件测试流程是把以人为驱动的测试行为转化为机器语言执行的一种过程 通常 在设计了测试用例并通过评审之后 由测试人员根据测试用例中描述的规程一步步执行测试 得到实际结果与期望结果的比较 在此过程中
  • Promise 捕获错误

    你好 我是南一 这是我在准备面试八股文的笔记 如果有发现错误或者可完善的地方 还请指正 万分感谢 前言 今天做项目时 遇到Promise抛出错误捕获不到的情况 然后我就去找了 阮一峰ES6入门重新学了一遍 又加深了对Promise的理解 分
  • 清除访问局域网密码缓存( samba )

    整了个samba的服务器 创建了两个用户 一个管理员用户 拥有全部的读写权限 另一个普通用户 只有部分文件夹得读写权限 xp在你第一次登录后会记住这个密码 以后登录都是直接登录 因此 给两个用户之间的切换带来不便 于是乎 找谷哥帮忙 谢谢谷
  • @前端vue-video-player 插件多视频获取后端数据的插件实践

    前端vue video player 插件多视频获取后端数据的插件实践总结 npm install npm install vue video player S 提醒 一定要用npm 一定要用npm 不要用cnpm 会报错 否则会报 The
  • 解决Android SDK / Android Studio(IntelliJ IDEA)更新不了(被墙)的问题

    昨天更新android sdk时 发现developer android com被墙了 手上也没有代理 再者android sdk manager更新有个不太好的地方是 只有一台机更新还好 但如果有多台机要更新 每台机都要重新下载一遍 那效
  • 神秘又强大的@SpringBootApplication注解

    一 前言 大部分的配置都可以用Java类 注解来代替 而在SpringBoot项目中见的最多的莫过于 SpringBootApplication注解了 它在每个SpringBoot的启动类上都有标注 这个注解对SpringBoot的启动和自
  • 解决VSCode中查看ESP32日志乱码

    问题现象 在VSCode的Monitor中查看ESP32输出的日志乱码 如下图 原因 在VSCode中IDF默认的Monitor串口波特率为460800 然而ESP32输出Log的串口波特率默认为115200 因串口波特率不匹配导致Moni
  • 墙裂推荐!pycharm装上这 14 个插件后,简直就是无敌的存在!!

    pycharm是一款强大的python集成开发环境 带有一整套python开发工具 今天就给大家介绍几款非常好用的插件 首先插件的下载方法 进入File gt Settings gt Plugins 根据需要搜索插件名称 记得是在Marke
  • jmeter 安装配置

    一 进入官网 http jmeter apache org 1 第一步进入官网如下图 2 选择进行下载 下载下来为一个压缩包 解压即可 3 下载完成后 然后就进行解压 要注意版本对应的java要求 解压完成后就要配置环境变量了 4 环境变量
  • C++中的compare比较字符串

    在C语言中的字符串比较使用的strcmp函数 但在C 中使用的是compare函数 格式 字符串A compare 字符串B 其中还可以指定子串比较 格式 A compare 0 3 B 4 3 说明字符串A中的从下标为0开始的3个字符和字
  • java中的NIO和IO

    今天看到一篇文章 其中提到了NIO 之前没使用过 今天拿出来学习下 做个个人分享 IO指的是流式处理 I对用的是Input O对应的是OutPut 也就是我们常用的IO IO流的数据来源可以是键盘 文件 网络等等 下面是其类图的划分 具体这
  • html字符实体

    比如我们想在网页上面显示一个 lt 小于符号 但是 lt 在HTML中是文档标记的开始语言 如果我们直接使用 lt 会出差错 所以我们就会一些实体名称来代替 显示结果 描述 实体名称 实体编号 空格 nbsp 160 lt 小于号 lt 6
  • python 无向图的生成

    import random n int input please input n m int input please input m v int input please input vote print int random unifo
  • Oracle联合查询详解

    联合查询 多表连接 概念 多张表连接 合并查询数据 分类 1 笛卡尔积连接 交叉连接 语法 select t1 column1 t1 column2 t2 column1 t2 column2 from table name1 t1 cro
  • CentOS在线安装MySQL,超细,易上手(附GPG密钥过期解决办法)

    MySQL 在线安装MySQL 1 下载 root localhost wget https dev mysql com get mysql57 community release el7 11 noarch rpm 2018 01 08
  • C++之模板实例化

    模板可以分为类模板与函数模板 它们的声明形式分别为 template
  • Docker下使用jstat查看jvm的GC信息

    Jstat指令 jstat命令命令格式 jstat Options vmid interval count 参数说明 Options 选项 我们一般使用 gcutil 查看gc情况 vmid VM的进程号 即当前运行的java进程号 int
  • read和write函数

    read ssize t read int fd void buf size t count fd 文件描述符 通过open获得 buf 需要读取的数据的存放位置 数组的地址 count 指定数组的大小 返回值 成功 gt 0 返回实际读取