c++ - 我应该使用 mount() 还是/usr/bin/mount

标签 c++ linux mount

我想使用 C++ 挂载文件系统。我应该使用 mount() 系统调用,还是只执行 mount 二进制文件?

显然,系统调用会更快,我会花更少的时间构建命令行参数和解析错误消息等。但是,在阅读 mount(2) 后,我不清楚参数有哪些限制(如果有的话)。

我特别希望能够挂载磁盘镜像文件以及实际的物理磁盘。而且我还希望能够通过指定从设备/镜像开始的偏移量来安装单个文件系统。我不知道您是否可以通过一次调用 mount() 来做到这一点,或者您是否需要先手动创建循环设备。 (我也不知道创建循环设备有多难 — 我推测这很容易...)

如果正确设置这些东西相当复杂,那么调用 mount 二进制文件可能会更简单、更容易。但如果只是一个系统调用,直接调用 mount() 似乎更简洁。那么哪一个可能给我带来的问题最少?

最佳答案

好吧,Nayden 建议运行 strace mount,这不是个坏主意。

完成此操作后,mount 似乎正在做大量工作 hell 。看起来它确实创建了一个循环设备并安装了它。 (这意味着它需要弄清楚下一个未使用的循环设备号是什么,等等)听起来您可能还需要手动找出文件系统类型。

简而言之,在我看来,对 mount 二进制文件的一次简单调用可能比尝试重新创建该程序所做的一切工作要少得多。我原以为智能在内核中,但显然不是。

关于c++ - 我应该使用 mount() 还是/usr/bin/mount,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25931541/

相关文章:

ubuntu - 如何在 Ubuntu 12.04 上使用带有 smstools3 的电话调制解调器

c++ - 尝试在 C++ 中实现状态管理器时出现链接错误

c++ - 如何使用libpqxx接收PostgreSQL数据库的通知?

linux - gpg加密和解密

linux - LFS 7.8 版,wget 不工作

c - TCP 客户端无法将字符串发送到服务器

c++ - 你如何重写一个带有副作用的 C++ 空 if 语句

c++ - 我们如何在 C++ 和 Windows API 中验证 openssl 数字签名

Docker 挂载卷错误 : includes invalid characters for a local volume name

Docker --mount 抛出 : executable file not found in $PATH"