2010-04-05 73 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

相關問題