gpt4 book ai didi

c - 在不离开内核空间的情况下实现 "tee"

转载 作者:可可西里 更新时间:2023-11-01 11:25:45 26 4
gpt4 key购买 nike

在 Linux 中,tee 命令将数据从 stdin 复制到 stdout 和文件;通过利用 teesplice 系统调用,可以在数据永远不会离开内核空间的情况下实现此功能。在 Windows 上实现 tee 命令并且数据永远不会离开内核空间需要哪些函数?

虽然 tee 命令有一个简单的实现,包括 readopenwrite 将数据复制到用户空间,我特别感兴趣的是学习如何在数据不离开内核空间的情况下分割文件流。

最佳答案

这个问题的前提是错误的。 tee 命令不依赖于 tee()splice() 系统调用,也不是零拷贝;它基本上实现为:

open file for writing;
while (read some data from stdin) {
write the data to stdout;
write the data to the file;
}

唯一涉及的系统调用是 open()read()write(),以及这些调用的 Windows 版本本质上与 UNIX 版本相同。

关于c - 在不离开内核空间的情况下实现 "tee",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37826505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com