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

相关推荐
C+-C资深大佬15 分钟前
C++ 数据类型转换是如何实现的?
开发语言·c++·算法
明洞日记24 分钟前
【软考每日一练008】Web 服务器性能测试指标
运维·服务器·操作系统·软考
以太浮标34 分钟前
华为eNSP模拟器综合实验之- AC+AP无线网络调优与高密场景
java·服务器·华为
真的想上岸啊38 分钟前
1、全志h616板子介绍
linux
2401_8904430238 分钟前
Linux线程概念与控制
linux
好多渔鱼好多41 分钟前
【IPC】 RTSP Server 如何实现推流
服务器·ipc·rtsp server·rtsp 推流实现
wdfk_prog44 分钟前
[Linux]学习笔记系列 --[drivers][base]map
linux·笔记·学习
23124_801 小时前
Cookie伪造
运维·服务器
石像鬼₧魂石1 小时前
Windows Server 2003 域控制器靶机搭建与渗透环境配置手册
linux·windows·学习
RisunJan1 小时前
Linux命令-killall(根据进程名称来终止一个或多个进程)
linux·运维·服务器