2014-06-13 51 views
1

Win32에서 mkdir(<name>)CreateDirectory(<name>, NULL) 사이에 차이가 있습니까? 나는, 모두mkdir과 ​​CreateDirectory의 차이점

+0

을 다른 아무튼 동안 '티? –

+1

@MrLister 아니요. 중간 하위 디렉토리가 없으면 둘 다 실패합니다. 그러나'mkdir'은 사용되지 않으며'CreateDirectory'는 보안 디스크립터를 허용합니다. ['SHCreateDirectoryEx'] (http://msdn.microsoft.com/en-us/library/bb762131%28VS.85%29.aspx)는 아마도 중간 생성물을 만들기 위해 생각한 것일 것입니다. –

답변

5

mkdir (및 권장 _mkdir 런타임 라이브러리 함수입니다. CreateDirectory 윈도우에 고유 한 (? 같은 방식으로) 노력하고 있습니다. 당신은 휴대용 코드를 원하는 경우에 볼 수 있듯이

, _mkdir를 호출합니다. 당신은 좋은 프로그램이 Windows 특정 만들고있어, 또는 보안 설명을 추가 할 수있는 기능이 필요한 경우 다음.

는 대부분의 경우, Windows 용 _mkdir 구현 CreateDirectory(name, NULL)를 호출합니다. CreateDirectory를 호출 그래서 모두 같은 일을 끝낸다.

편집 : _mkdir의 비주얼 스튜디오 12() 구현은 다음 CreateDirectoryW 호출 _wmkdir(), 호출, 하나는 너무 중간 하위 디렉토리를 생성하지 않습니다, 내 머리 위로 떨어져

int __cdecl _wmkdir (
     const wchar_t *path 
     ) 
{ 
     ULONG dosretval; 

     /* ask OS to create directory */ 

     if (!CreateDirectoryW(path, (LPSECURITY_ATTRIBUTES)NULL)) 
      dosretval = GetLastError(); 
     else 
      dosretval = 0; 

     if (dosretval) { 
      /* error occured -- map error code and return */ 
      _dosmaperr(dosretval); 
      return -1; 
     } 

     return 0; 
}