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` 字节的数据,其中其中一个文件描述符必须指向一个管道。

相关推荐
在路上看风景7 小时前
19. 成员初始化列表和初始化对象
c++
zmzb01037 小时前
C++课后习题训练记录Day98
开发语言·c++
wdfk_prog7 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
念风零壹7 小时前
C++ 内存避坑指南:如何用移动语义和智能指针解决“深拷贝”与“内存泄漏”
c++
七夜zippoe7 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
盟接之桥7 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿8 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘8 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
孞㐑¥8 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
Fcy6489 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程