linux——read和write函数实现cp、用户级缓冲预读入缓冲的简单认识

2023-10-27

在这里插入图片描述

  • 用read和write实现cp
    在这里插入图片描述
    1,注意头文件
    2,fd1是源文件,传入参数中的第一个,fd2是目标文件,传入参数中的第二个,要写入的文件至少可写:如果没有当前文件就创建文件并设置权限,如果已经有文件就截断为0再重新写
    3,定义一个缓冲区,读到缓冲区,再从缓冲区中写入目标文件
    4,用循环,知道读到源文件尾返回为0才停止
    5,养成习惯,打开文件就要关闭文件

扩展:关于错误处理函数:
在系统编程阶段是不允许像上文编写程序的,上文主要为了凸显编写逻辑。
在理论上讲,所有的系统函数在编辑编写中都需要检查返回值, 除了有一些必要性不是特别大,像close函数

==改上例:open的时候和read的时候都可能报错
在这里插入图片描述


同样也可用fget,gput函数实现拷贝,但是却比read和write函数实现快很多,这是因为fget和fput函数有自带的一个缓冲区,是4096个字节一次才进行磁盘交换,而readwrite就是按照程序所给buf大小进行交换。可用strace进行查看
read、write称为Unbuffered I/O,无用户级缓冲区
在这里插入图片描述
所以系统函数并不比库函数更好

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

linux——read和write函数实现cp、用户级缓冲预读入缓冲的简单认识 的相关文章

  • 在 C 中使用单个消息队列是否可以实现双向通信

    我希望服务器向客户端发送一些消息 并让客户端确认它 我被分配了这个任务 我可以在 C linux 中使用单个消息队列来完成它还是我需要创建两个 谢谢 是的 可以使用 sysV 消息队列来做到这一点 从您之前的问题来看 您正在使用该队列 您可
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 从 ttyUSB0 写入和读取,无法得到响应

    我对 Linux tty 不太有经验 我的环境是带有丰富 USB 串行的 Raspbian 什么有效 stty F dev ttyUSB0 38400 cu l dev ttyUSB0 s 38400 cu to dev ttyUSB0作品
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 内核的panic()函数是否完全冻结所有其他进程?

    我想确认内核的panic 功能和其他类似kernel halt and machine halt 一旦触发 保证机器完全冻结 那么 所有的内核和用户进程都被冻结了吗 是panic 可以被调度程序中断吗 中断处理程序仍然可以执行吗 用例 如果
  • 在生产服务器上使用 Subversion 使文件生效的最佳方法是什么?

    目前我已经设置了 subversion 这样当我在 Eclipse PDT 中进行更改时 我可以提交更改 它们将保存在 home administrator 中项目文件 该文件具有 subversion 推荐的 branches tags
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • 这种文件锁定方法可以接受吗?

    我们有 10 个 Linux 机器 每周必须运行 100 个不同的任务 这些计算机主要在我们晚上在家时执行这些任务 我的一位同事正在开发一个项目 通过使用 Python 自动启动任务来优化运行时间 他的程序将读取任务列表 抓取一个打开的任务
  • 我什么时候应该编写 Linux 内核模块?

    有些人出于某种原因想要将 Linux 中的代码从用户空间移动到内核空间 很多时候 原因似乎是代码应该具有特别高的优先级 或者只是 内核空间更快 这对我来说似乎很奇怪 我什么时候应该考虑编写内核模块 有一套标准吗 我怎样才能激励将代码保存在
  • 如何在 Mac OSX Mavericks 中正确运行字符串工具?

    如何在 Mac OSX Mavericks 中正确运行字符串工具 我尝试按照我在网上找到的示例来运行它 strings a UserParser class 但我收到此错误 错误 Applications Xcode app Content
  • x86-64 AMD 上 CALL 指令的操作数生成

    以下是示例程序 objdump 的输出 080483b4
  • ansible unarchive 模块如何查找 tar 二进制文件?

    我正在尝试执行一个 ansible 剧本 该剧本的任务是利用unarchive模块 因为我是在 OSX 上执行此操作 所以我需要使用它gnu tar 而不是bsd tar通常与 OSX 一起提供 因为BSD tar 不受官方支持 https
  • 跨 CPU 内核的 rdtsc 精度

    我从一个线程发送网络数据包 并在运行于不同 CPU 核心上的第二个线程上接收回复 我的流程测量每个数据包发送和接收之间的时间 类似于 ping 我使用 rdtsc 来获得高分辨率 低开销的计时 这是我的实现所需要的 所有测量结果看起来都很可
  • Ubuntu 的打包 - Web 应用程序

    Web 应用程序没有与 C 或类似文件不同的 make 文件 但是 它需要放置在特定的目录中 例如 var www 我是 Linux 打包新手 所以我的问题是 如何将我的应用程序打包到 deb 中 以便在安装时将其放入 etc myprog

随机推荐

  • ready()事件与load()事件的区别

    页面加载时触发ready 事件 ready 事件类似于onLoad 事件 但前者只要页面的DOM结构加载后便触发 而后者必须在页面全部元素加载成功才触发 ready 可以写多个 按顺序执行 此外 下列写法是相等的 document read
  • 深入理解Java虚拟机jvm-栈溢出-对象引用过多java.lang.StackOverflowError

    对象引用过多 示例 结果 原因分析 示例 栈溢出 栈内存过小 对象引用过多 java lang StackOverflowError 输出 stack length 344 public class Demo3 private static
  • CTFshow sql注入 上篇(web171-220)

    目录 前言 题目 web 171 万能密码 web 172 回显内容过滤 base64或者hex编码绕过 web 173 回显内容过滤 base64或者hex编码绕过 web 174 布尔盲注丶trim盲注丶replace替换字符 web
  • Cmake 中 file、message和add_executable解析

    file 为cmake中文件操作时用的语句 比如文件的创建 读写 等操作都是通过file来操作的 GLOB file GLOB variable RELATIVE path FOLLOW SYMLINKS globbing expressi
  • DVWA靶场下的sql注入之文件读写

    DVWA的安装配置在我上一篇文章上写过了 不知道的可以去看看 这里直接讲sql注入如何获得文件读写权限 sql注入读写的根本条件 1 数据库用户得是高权限用户 root 2 数据库下的secure file priv不是null 如果是也可
  • 文档在线预览(三)使用js前端实现word、excel、pdf、ppt 在线预览

    关于实现文档在线预览的做法 之前文章提到了的两种实现方式 1 通过将文档转成图片 详见 文档在线预览 一 通过将txt word pdf转成图片实现在线预览功能 2 将文档转成html 详见 文档在线预览 二 word pdf文件转html
  • 运放自激振荡的补偿

    运放的相位补偿 为了让运放能够正常工作 电路中常在输入与输出之间加一相位补偿电容 1 关于补偿电容 理论计算有是有的 但是到了设计成熟阶段好象大部分人都是凭借以前的调试经验了 一般对于电容大小的取值要考虑到系统的频响 简单点说加的电容越大
  • 职场工作与生活

    序言 和很多在CSDN的博主一样 大家在工作之后就很少或者是不再回到CSDN 确实自己也一年多没上了 因为可能当初大家在这就是为了记录和分享当初自己学习技术的东西 而大家走出象牙塔开始工作后 发生了很大的转变 在国内大多数搞技术的工作要求保
  • Beam数据流水线——Pipeline

    目录 Beam简介 基本概念 数据流水线 Beam数据流水线的应用 Beam数据流水线的处理模型 Beam数据流水线的错误处理 单Transform错误处理 多步骤Transform错误处理 Beam简介 Apache Beam 是Goog
  • 工厂的进化

    本文从一个简单示例的需求不断衍化过程 来分析理解简单工厂 工厂方法 抽象工厂模式 首先看一下初始示例 public interface Car public void drive public class BenzCar implement
  • js 实现刷新页面 保留当前tab切换状态

    div class mes tab div class tab tit flexbetween span 报考指南 span span 考研院校 span span 考研专业 span span 备考资料 span span 复试调剂 sp
  • ImportError: No module named typing

    python版本 2 7 错误 使用pip时出现该错误 Traceback most recent call last File C Python27 Scripts pip script py line 9 in load entry p
  • iframe如何发送请求_Vue 中使用 Iframe 踩坑记

    背景 创业项目使用的 Vue 开发前端 最近在开发的一个需求涉及到了 Iframe 的使用 为了让父子页面能够正常通信 头都搞大了 不过最终是解决了问题 写篇文章记录下 利人利己 难点 之前没有在 Vue 中使用过 Iframe 网上的相关
  • 【环境搭建】Docker上搭建sqli-labs漏洞环境

    目录 1 sqli labs简介 2 Docker搭建sqli labs 3 总结 参考文献 1 sqli labs简介 sq Ii labs是一款学习SQL注入的开源平台 共有75种不同类型的注入 官方介绍如下 SQLI LABS is
  • 基于VMD-SSA-LSTM的多维时序光伏功率预测

    目录 1 主要内容 变分模态分解 VMD 麻雀搜索算法SSA 长短期记忆网络LSTM 2 部分代码 3 程序结果 4 下载链接 1 主要内容 之前分享了预测的程序基于LSTM的负荷和可再生能源出力预测 核心部分复现 该程序预测效果比较好 并
  • RT-Thread uart2串口dma idle接收不断帧

    硬件STM32F407 IDE使用RT Thread Studio uart2串口使用这两个引脚 功能 IO端口 UART2 TX PA2 UART2 RX PA3 UART2 DMA接收配置 先使能DMA接收 RX缓冲区可以稍微调大些 b
  • Vuetify笔记(5):data-tables组件

    v data table 用于显示表格数据 功能包括排序 搜索 分页 行内编辑 头部提示以及行选择 而我们在实际应用中使用最多的就是服务端分页和排序 如果你从后台加载数据 并希望显示结果之前进行分页和排序 你可以使用 total items
  • 对象的构造和析构

    对象的构造和析构 1 对象的初始化和清理 构造函数 和 析构函数 被编译器自动调用完成对象初始化和对象清理工作 2 构造函数 和 析构函数 构造函数写法 与类名相同 没有返回值 不写void 可以有参数 可以发生重载 构造函数由编译器自动调
  • 神经网络学习——图像篡改

    记录 这是课堂上做的一个关于图像篡改识别的题目 因为前后花的时间比较多 虽然最后实现的效果也不怎么行 但是这个过程踩了很多坑 这里记录一下 文章目录 记录 前提 题目分析 网络搭建 依赖包 数据读取处理 网络搭建 训练参数 预测函数 模型保
  • linux——read和write函数实现cp、用户级缓冲预读入缓冲的简单认识

    用read和write实现cp 1 注意头文件 2 fd1是源文件 传入参数中的第一个 fd2是目标文件 传入参数中的第二个 要写入的文件至少可写 如果没有当前文件就创建文件并设置权限 如果已经有文件就截断为0再重新写 3 定义一个缓冲区