如何使用cocoa/obj-c从装载的目录中获取服务器主机名?

如何使用cocoa/obj-c从装载的目录中获取服务器主机名?,cocoa,macos,path,mount,hostname,Cocoa,Macos,Path,Mount,Hostname,目前,当我用我的程序打开一个文件时,我可以通过单击NSOpenPanel侧栏中的服务器名称,然后选择该文件来选择服务器上的文件。没问题,只要安装了共享目录,就可以使用该文件。我得到的路径类似于/Volumes/SHARENAME/filename.bla 我的问题是如何获取它来自的计算机的服务器主机名。例如,如果我在NSOpenPanel中的Shared下单击名为SERVERNAME的设备,如何从/Volumes/SHARENAME/filename.bla获取SERVERNAME 我已经看了很

目前,当我用我的程序打开一个文件时,我可以通过单击NSOpenPanel侧栏中的服务器名称,然后选择该文件来选择服务器上的文件。没问题,只要安装了共享目录,就可以使用该文件。我得到的路径类似于/Volumes/SHARENAME/filename.bla

我的问题是如何获取它来自的计算机的服务器主机名。例如,如果我在NSOpenPanel中的Shared下单击名为SERVERNAME的设备,如何从/Volumes/SHARENAME/filename.bla获取SERVERNAME

我已经看了很多文档,无法找到这个问题的解决方案


对此,任何帮助都将不胜感激。谢谢。

这不是一种客观的方法,但有时使用popen。。can-get允许您获取可以从unix命令解析的信息

范例

#include <stdio.h>
#include <string.h>

int main() {
  FILE *fp = popen("df", "r"); // see man page for df
  if (fp) {
    char line[4096];
    while (line == fgets(line, 4096, fp)) {
      if (strstr(line, "/Volumes/SHARENAME")) { // You need the mount point
        char host[256];
        sscanf(line, "%s", host);
        printf("Connected: %s\n", host);
      }
    }
    pclose(fp);
  }
  return 0;
}

谢谢你的快速回复。我对C的理解还不够透彻,没有弄明白这一点,但它肯定能完成这项工作。类似的答案是,为了选择目标目录,用-P调用df。这只是事实的一半,现在编辑已经太迟了;P与directory参数无关,但将块大小设置为512以独立于BLOCKSIZE env。变量因为我们实际上并没有试图解析数字,所以我们不关心单位,也不需要-P。传递directory参数仍然是一个很好的方法和快捷方式。还要注意,上面的方法很危险,可能会导致很长主机名的缓冲区溢出。