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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • httprunner(4)录制生成测试用例[通俗易懂]

    httprunner(4)录制生成测试用例[通俗易懂]前言写用例之前,我们应该熟悉API的详细信息。建议使用抓包工具Charles或AnyProxy进行抓包。har2case我们先来了解一下另一个项目har2case他的工作原理就是将当前主流的抓

    2022年7月31日
    10
  • 编写 if 时不带 else,你的代码会更好!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 来源:翻译自:Nicklas Millard的文章《Better Software Without If-Else》…

    2021年6月27日
    95
  • 网络编程的三个重要信号(SIGHUP ,SIGPIPE,SIGURG)[通俗易懂]

    网络编程的三个重要信号(SIGHUP ,SIGPIPE,SIGURG)[通俗易懂]  对于信号的介绍,我再前面的一篇博客中做过专门的总结,感兴趣的可以看看。本文主要介绍在网络编程中几个密切相关的函数:SIGUP,SIGPIPE,SIGURG。SIGHUP信号  在介绍SIGHUP信号之前,先来了解两个概念:进程组和会话。进程组  进程组就是一系列相互关联的进程集合,系统中的每一个进程也必须从属于某一个进程组;每个进程组中都会有一个唯一的ID(process…

    2022年5月30日
    54
  • SPI协议_Verilog实现「建议收藏」

    SPI协议_Verilog实现「建议收藏」SPI协议_Verilog实现概述:通过Verilog代码+仿真的形式来理解SPI的时序,此处只写了主机发送,从机接收的代码,后待续。。。SPI协议简介●SPI接口介绍  SCK:时钟信号,由主设备产生,所以主设备SCK信号为输出模式,从设备的SCK信号为输入模式。  CS:使能信号,由主设备控制从设备,,所以主设备CS信号为输出模式,从设备的CS信号为输入模式。  MOSI:主设备数据输出,从设备数据输入,所以主设备MOSI信号为输出模式,从设备的MOSI信号为输入模式。  MISO:主设

    2022年10月15日
    3
  • chrome下document.cookie为空

    chrome下document.cookie为空今天遇到一个待解决的问题:关于Chrome浏览器下,可设置cookie,但无法读取的问题!baidu.cookie.set(‘hideMask’,’1′);从这里可以看到chrome中相关的cookie存储情况,能找到已设置成功的cookie值:chrome://chrome/settings/cookies但是,通过document…

    2022年7月20日
    41
  • sizeof,终极无惑(上)

    sizeof,终极无惑(上)

    2021年12月8日
    37

发表回复

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

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