2010-04-05 1 views
1

현재 내 프로그램에서 파일을 열면 NSOpenPanel의 세로 막대에서 서버 이름을 클릭 한 다음 파일을 선택하여 서버에서 파일을 선택할 수 있습니다. 문제가되지 않습니다. 공유 디렉토리가 마운트되어있는 한이 파일을 사용하면 문제가 없습니다. "/Volumes/SHARENAME/filename.bla"와 같은 경로가 있습니다.코코아/obj-c를 사용하여 마운트 된 디렉토리에서 서버 호스트 이름을 얻으려면 어떻게해야합니까?

내 질문은 어떻게 내가 왔는지 컴퓨터의 서버 호스트 이름을 어떻게 얻습니까? 예를 들어, NSOpenPanel에서 "Shared"아래에 SERVERNAME이라는 이름의 장치를 클릭하면 "/VOLumes/SHARENAME/filename.bla"에서 SERVERNAME을 어떻게 얻을 수 있습니까?

나는 많은 문서를보고이 문제에 대한 해결책을 찾을 수 없었습니다.

이 문제에 대한 도움을 주시면 감사하겠습니다. 고맙습니다.

답변

0

이 방법은 Objective-C 방식이 아니지만 때때로 popen(..)을 사용하면 유닉스 명령에서 구문 분석 할 수있는 정보를 얻을 수 있습니다.

#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

+0

비슷한 대답이 http://stackoverflow.com/questions/24848211/get-unc-path-in-osx-of-mounted-share/24874696#24874696에 주어졌으며'df'는'-P'로 호출됩니다. 대상 디렉토리를 선택하십시오. –

+0

이것은 진실의 절반에 지나지 않으며 편집하기에는 너무 늦었습니다. '-P'는 (디렉토리) 인수와 아무 관련이 없지만, 블록 크기를 512로 설정하여 BLOCKSIZE 환경과 독립적입니다. 변하기 쉬운. 우리가 실제로 숫자를 파싱하려고하지 않기 때문에, 우리는 유닛을 신경 쓰지 않고'-P'는 필요하지 않습니다. (여전히 디렉토리 인자를 전달하는 것은 좋은 아이디어이며 지름길입니다.) –

관련 문제