【发布时间】:2013-07-23 03:48:53
【问题描述】:
我需要在大文件中间实现添加和删除块 - “打孔”我在 FreeBSD 下找不到模拟函数 fallocate() 和 splice()。
【问题讨论】:
-
不幸的是,这些功能在 FreeBSD 中不存在,并且如手册页所述,它们只是 Linux 扩展。
我需要在大文件中间实现添加和删除块 - “打孔”我在 FreeBSD 下找不到模拟函数 fallocate() 和 splice()。
【问题讨论】:
FreeBSD 从 8.3 开始就有posix_fallocate(2),但没有splice()。
【讨论】:
Roland 对 posix_fallocate() 的看法是正确的。顺便说一句,即使在 Linux 系统(RHEL-5.7)上我也找不到 fallocate(),所以即使在 Linux 上你也真的不想依赖它的存在。
至于 splice(),看起来,没有。在 FreeBSD 上最接近的是 sendfile() —— 但仅当目标是 socket 时。
【讨论】: