splice, io_uring_prep_splice 调用(无效参数)

我想把 一个socket 文件零拷贝到磁盘文件

复制代码
     io_uring_prep_splice(sqe,
                         ctx->client_fd ,0,
                         ctx->file_fd   ,start_pos,
                         size ,
                         0 );
     uint64_t user_data = (uint64_t) op_type::OP_INSTALL_BLOCK << 32 | ctx->ctx_id ;
     io_uring_sqe_set_data64(sqe,user_data);
     io_uring_submit(&ring);

错误码一直是 -22 (无效参数)

查过相关资料了解到 splice 必须要有一个文件描述符为管道

`splice()` 函数在两个文件描述符之间移动数据,而无需在内核地址空间和用户地址空间之间进行复制。它从文件描述符 `fd_in` 向文件描述符 `fd_out` 转移最多 `len` 字节的数据,其中其中一个文件描述符必须指向一个管道。

相关推荐
青瓦梦滋4 小时前
C++的IO流与STL的空间配置器
开发语言·c++
匆匆那年9674 小时前
VSCode 远程 Linux 使用Codex
linux·ide·vscode
それども5 小时前
Gradle 构建疑难杂症 Could not find netty-transport-native-epoll-linux-aarch_64.ja
java·服务器·gradle·maven
鱼很腾apoc5 小时前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程
NightReader6 小时前
CPU 高使用率,怎么降下来
运维·服务器
SWAGGY..6 小时前
Linux系统编程:(七)Makefile入门:轻松掌握编译自动化
linux·运维·自动化
不吃土豆的马铃薯6 小时前
4.SGI STL 二级空间配置器 allocate 与_S_refill 源码解析
c语言·开发语言·c++·dreamweaver·内存池
开开心心就好6 小时前
免费流畅的远程控制实用工具
linux·运维·服务器·网络·智能手机·excel
fufu03117 小时前
vscode配置C/C++环境,用GDB调试简单程序分享
开发语言·c++
黑猫学长呀8 小时前
存储宝典第2篇:盲封TT wafer是什么意思?
linux·嵌入式硬件·项目·芯片·ufs·晶圆·产测