2010-04-05 72 views
1

目前当我用我的程序打开一个文件时,我可以通过点击NSOpenPanel侧边栏中的服务器名称然后选择文件来选择服务器上的文件。没问题,只要安装了共享目录,这对于使用该文件就可以正常工作。我得到一个像“/Volumes/SHARENAME/filename.bla”的路径。如何使用cocoa/obj-c从挂载目录获取服务器主机名?

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

我已经看过相当多的文档,并且一直无法找到解决这个问题的方法。

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

回答

0

这不是一个Objective-C的做法,但有时候使用popen(..)可以让你获取可以从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; 
} 
+0

谢谢你的快速反应。我对C没有足够的理解,但肯定会完成这项工作。 – Andrew 2010-04-05 22:36:31

+0

在http://stackoverflow.com/questions/24848211/get-unc-path-in-osx-of-mounted-share/24874696#24874696中给出了类似的答案,其中'df'用'-P'调用为了选择目标目录。 – 2015-01-16 12:29:41

+0

这只是事实的一半(编辑它为时已晚); '-P'与(目录)参数无关,但将块大小设置为512以独立于BLOCKSIZE env。变量。由于我们实际上并没有试图解析数字,所以我们不关心这些单位,'-P'也不是必需的。 (它仍然是一个不错的想法和快捷方式来传递目录参数。) – 2015-01-16 12:43:59

相关问题