gpt4 book ai didi

linux - 有没有一种简单的方法来 fork 文件描述符?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:10 24 4
gpt4 key购买 nike

我刚刚阅读了一些手册页:dup、dup2、fcntl、pread/pwrite、mmap 等。

目前我正在使用 mmap,但这不是世界上最好的事情,因为我必须自己管理文件偏移量和缓冲区长度,并且基本上在用户空间中重新实现读/写。

从我收集到的:

  1. dup、dup2、fcntl 只是为 fds 创建别名,因此它们的偏移量和标志是共享的 - 从一个读取会提高其他偏移量。
  2. pread/pwrite 可能存在错误并给出不一致的结果。
  3. 当给定一些不常见的标志时,mmap 在 Linux 上会出现错误,但我不需要它们。

我是不是遗漏了什么,或者 mmap 真的是可行的方法吗?

(请注意,重新open()文件在 POSIX 上是危险的 - 与 Windows 不同,POSIX 不保证文件打开时路径不被移动/删除。在 POSIX 上,你可以打开一个路径,移动文件,并仍然从中读取。有时你甚至可以删除文件。我也找不到任何可以打开 inode 的东西。)

我想要至少最常见的 POSIX 变体的答案,如果没有一个答案可以解决所有问题的话。

最佳答案

在 Linux 上,打开 /proc/self/fd/$NUM 将起作用,而不管该文件是否仍然具有您第一次打开它时的相同名称,并将生成一个新的打开文件描述(即具有独立偏移量和标志的新 fd)。

我不知道有任何 POSIXly 可移植的方法可以做到这一点。

(我也不知道你说的 pread/pwrite 有问题是什么意思...)

关于linux - 有没有一种简单的方法来 fork 文件描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47963909/

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