我刚刚阅读了一些手册页:dup,dup2,fcntl,pread / pwrite,mmap等。
目前我正在使用mmap,但它并不是世界上最好的东西,因为我必须自己管理文件偏移量和缓冲区长度,基本上是在用户空间重新实现读/写。
从我收集到的内容:
我是否遗漏了某些东西或者mmap真的要走了?
(注意重新open()
文件在POSIX上是危险的 - 与Windows不同,POSIX不保证在文件打开时没有移动/删除的路径。在POSIX上,你可以打开一个路径,移动文件,仍然从中读取。有时甚至可以删除文件。我也找不到任何可以打开inode的文件。)
至少对于最常见的POSIX变体,我想要答案,如果没有人回答这些变种。
答案 0 :(得分:2)
在Linux上,打开/proc/self/fd/$NUM
无论文件是否仍然与第一次打开时的名称相同,都会有效,并且会生成一个新的打开文件描述(即具有独立偏移的新fd和标志)。
我不知道任何POSIXly便携式的方式。
(我也不知道你对pread / pwrite的错误是什么意思......)