2011-03-22 2 views
4

C 프로그램을 사용하여 파일의 상위 디렉토리를 찾을 수있는 방법이 있습니까? 디렉토리에있는 파일에 동일한 권한을 부여하고 싶습니다. 그렇게하기 위해 파일의 상위 디렉토리를 알고 싶습니다. 어떤 도움을 주셔서 감사합니다.파일의 상위 디렉토리

+1

문자열에서? 파일 설명자에서? –

+2

파일은 하나 이상의 부모 디렉토리를 가질 수 있습니다 : Linux, 접속점 또는 Windows의'man ln' (Windows Vista에서'mklink /?') – pmg

+0

을 사용하십시오. 디렉토리의 내용을 상속합니다. –

답변

2

당신이 Windows에서 행운을 시도 할 수 있습니다 표준 C에서 그런 기능이 없다 : GetFullPathName http://msdn.microsoft.com/en-us/library/aa364963%28v=vs.85%29.aspx

그리고 아마 http://msdn.microsoft.com/en-us/library/e737s6tf%28v=vs.80%29.aspx

_splitpath 그러나 기록 된 같은 종류의 일을위한 표준 기능이 아니다는 사물의. 당신이 파일의 경로가있는 경우가 상대적 경우

+0

사실 Windows에서 당신은 ..문자열의 마지막에'PathCanonicalize()'를 호출하면된다. –

3

, 당신은 그것을 절대 경로를함으로써 수동으로 작업을 수행 할 수 있습니다 (Windows에서 유닉스에 /, 또는 letter:\ 또는 \ 또는 letter:/ 또는 /로 시작하지 않는) 파일 분리 문자 (/ 또는 \)로 분할하면되지만,이 모든 작업을 수행 할 기본 제공 함수가 없음을 알고 있습니다.

basename and dirname 함수가 도움이 될 수 있지만 문자열 만 사용할 수 있으므로 파일 경로를 충분히 이해해야합니다. 그들은 파일 시스템을 조사하지 않습니다.

+0

dirname 맨 페이지 : http://linux.die.net/man/3/dirname – Daniel

1

똑바로 살아라을 보장 할 수 없습니다,하지만 당신은 다음 중 하나를 시도했다 : 당신의 이름은 경로 구분자 (유닉스 예를 들어 /, Windows에서 \)를 포함

  • 경우, 사본을 예를 들어 사용하는 문자열 strdup()을 입력하고 경로 구분 기호 (예 : strrchr()과 같이 있음)의 마지막 항목을 0/null 문자로 바꿉니다. 결과 문자열은 파일의 상위 디렉토리가됩니다.

  • 경로 구분 기호가없는 경우 파일은 현재 작업 디렉토리 내에 있습니다. .을 사용해 보셨습니까? ... 링크는 유닉스와 윈도우 모두에서 작동합니다.

(예를 들어 어떤 파일 /hello.txt의?) 위의 꽤 많은 코너 케이스가있다, 그러나 그것은 시작해야합니다.

관련 문제