C++ Mac 上 hdiutil 的界面

发布于 2024-08-17 01:53:42 字数 83 浏览 3 评论 0原文

是否存在允许我的 C++ 代码在 Mac OS X 上使用 hdiutil 的系统调用或库。我的代码需要安装可用的 .dmg 文件,然后操作其中的内容。

Does a system call or library exist that would allow my C++ code to use hdiutil on Mac OS X. My code needs to mount an available .dmg file and then manipulate what's inside.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

懒猫 2024-08-24 01:53:42

如果您可以使用 Objective-C++,则可以使用 NSTask 来运行命令行工具:

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/bin/hdiutil"];
[task setArguments:
    [NSArray arrayWithObjects: @"attach", @"/path/to/dmg/file", nil]];
[task launch];
[task waitUntilExit];
if (0 != [task terminationStatus])
    NSLog(@"Mount failed.");
[task release];

如果您需要使用“普通”C++,则可以使用 system():

if (0 != system("/usr/bin/hdiutil attach /path/to/dmg/file"))
    puts("Mount failed.");

或 fork()/exec()。

您需要仔细检查 hdiutil 是否实际返回 0 表示成功。

If you can use Objective-C++, you can use NSTask to run command line tools:

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath: @"/usr/bin/hdiutil"];
[task setArguments:
    [NSArray arrayWithObjects: @"attach", @"/path/to/dmg/file", nil]];
[task launch];
[task waitUntilExit];
if (0 != [task terminationStatus])
    NSLog(@"Mount failed.");
[task release];

If you need to use "plain" C++, you can use system():

if (0 != system("/usr/bin/hdiutil attach /path/to/dmg/file"))
    puts("Mount failed.");

or fork()/exec().

You'll need to double-check whether hdiutil actually returns 0 for success or not.

屌丝范 2024-08-24 01:53:42

hdiutil 使用 DiskImages.framework;不幸的是,该框架是私有的(无文档,没有标题),但如果您喜欢冒险,您可以 尝试使用它

hdiutil uses DiskImages.framework; unfortunately, the framework is private (undocumented, no headers), but if you're feeling adventurous, you can try to use it anyway.

再见回来 2024-08-24 01:53:42

hdiutil 有一个 -plist 参数,使其将输出格式化为标准 OS X plist。有关处理的信息,请参阅 hdiutil 的输出;因为您可能需要检查一下输出才能找到您需要的内容,所以最初使用 python 之类的东西可能很容易做到这一点。然后请参阅此处,了解有关在 C++ 中解析 plist 的一些建议。

hdiutil has a -plist argument that causes it to format its output as a standard OS X plist. See this for info on processing the output from hdiutil; because you'll likely have to examine the output a bit to find what you need, it may be easy to do this initially with something like python. Then see here for some suggestions on parsing plists in C++.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文