检查目录是否是 OSX 中 Objective C 中的挂载点

Bog*_*dan 5 c filesystems macos objective-c

我正在用 Objective C 编写一个小命令行实用程序,它将检查给定的路径是否是挂载点,如果不是,则将网络共享挂载到它。我打算用 bash 写这个,但选择尝试学习 Objective C。我正在寻找类似于这样的Objective C:

mount | grep some_path
Run Code Online (Sandbox Code Playgroud)

基本上是我可以用来测试给定路径当前是否用作挂载点的函数。任何帮助,将不胜感激。谢谢!

Bog*_*dan 5

经过一番研究,我最终使用了这段代码,以防将来有人需要它:

        NSArray * keys = [NSArray arrayWithObjects:NSURLVolumeURLForRemountingKey, nil];
        NSArray * mountPaths = [[NSFileManager defaultManager] mountedVolumeURLsIncludingResourceValuesForKeys:keys options:0];

        NSError * error;
        NSURL * remount;

        for (NSURL * mountPath in mountPaths) {
            [mountPath getResourceValue:&remount forKey:NSURLVolumeURLForRemountingKey error:&error];
            if(remount){
                if ([[[NSURL URLWithString:share] host] isEqualToString:[remount host]] && [[[NSURL URLWithString:share] path] isEqualToString:[remount path]]) {
                    printf("Already mounted at %s\n", [[mountPath path] UTF8String]);
                    return 0;
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

请注意,NSURL 共享作为远程共享的路径传递到函数中。通过重新挂载键进行过滤可以为您提供远程文件系统的挂载点列表,因为本地文件系统没有该键集。