sendfile函数「建议收藏」

sendfile函数「建议收藏」sendfile函数在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了内核缓冲区和用户缓冲区之间的数据拷贝,效率很高,这被称为零拷贝。sendfile函数的定义如下:#includessize_tsendfile(intout_fd,intin_fd,off_t*offset,size_tcount);in_fd参数是待读出内容的文件

大家好,又见面了,我是你们的朋友全栈君。

sendfile函数在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了内核缓冲区和用户缓冲区之间的数据拷贝,效率很高,这被称为零拷贝。sendfile函数的定义如下:

#include <sys/sendfile.h>
ssize_t sendfile(int out_fd, int in_fd, off_t* offset, size_t count);

in_fd参数是待读出内容的文件描述符,out_fd参数是待写入内容的文件描述符。offset参数指定从读入文件流的哪个位置开始读,如果为空,则从in_fd文件描述符所指的文件的文件偏移位置开始读,并且sendfile会更新in_fd所指文件的文件偏移。offset如果不为空,则指定从读入文件的哪个位置开始读,当sendfile执行完后,offset返回下一个要读的字节位置,注意,offset不为空不更新in_fd所指文件的文件偏移。count参数指定在文件描述符in_fd和out_fd之间传输的字节数。sendfile成功时返回传输的字节数,失败则返回-1并设置errno。该函数的man手册明确指出in_fd必须是一个支持类似mmap函数的文件描述符,即它必须指向真实的文件,不能是socket和管道;在Linux2.6.33之前,out_fd必须是一个socket,而从Linux2.6.33之后,out_fd可以是任何文件。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134924.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月3日 上午9:20
下一篇 2022年5月3日 上午9:40


相关推荐

  • css鼠标变小手

    css鼠标变小手css 鼠标变小手

    2026年3月19日
    3
  • 如何理解先验概率和后验概率

    如何理解先验概率和后验概率如何理解先验概率和后验概率前言先验概率的分类先验概率与后验概率的区别理解前言近代西方传统中 认为先验指无需经验或先于经验获得的知识 它通常与后验知识相比较 后验意思是指 在经验之后 需要经验 这一区分来自于中世纪逻辑所区分的两种论证 从原因到结果的论证称为 先验的 而从结果到原因的论证称为 后验的 先验概率是指根据以往经验和分析得到的概率 如全概率公式 它往往作为 由因求果 问题中的 因 出现 后验概率是指在得到 结果 的信息后重新修正的概率 是 执果寻因 问题中的 因 后验概率是基于新的

    2025年8月15日
    5
  • uml用例图详解_uml模型图

    uml用例图详解_uml模型图用例图的含义由参与者(Actor)、用例(UseCase)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。其中用例和参与者之间的对应关系又叫做通讯关联(CommunicationAssociation)。用例图的作用用例图是需求分析中的产物,主要作用是描述参与者与和用例之间的关系,帮助开发人员可视化地了解系统的功能。借助于用例图,系统用户、系统分析人员、系统设计人员、领…

    2025年9月27日
    5
  • Web指纹识别目的Discuz识别+粗糙的版本演绎

    Web指纹识别目的Discuz识别+粗糙的版本演绎

    2022年1月12日
    50
  • linux修改java环境,linux下修改java环境变量

    linux修改java环境,linux下修改java环境变量linux下修改java环境变量[2021-02-0701:55:24]简介:linux修改php环境变量的方法:首先添加路径,代码为【exportPATH=”$PATH:/cxwww/server/php/7.3.4/bin”】;然后读取配置即可,代码为【source/etc/profile】。linux修改php环境变服务器这篇文章主要为大家展示了linux环境下怎么配置环境变量,内…

    2025年6月19日
    4
  • Log4net中ConversionPattern的代码解释[通俗易懂]

    Log4net中ConversionPattern的代码解释[通俗易懂]      layout type=”log4net.Layout.PatternLayout”>        param name=”Header” value=”———————–header————————–” />        param name=”Footer” value=”——————–

    2022年8月22日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号