mkdir和CreateDirectory之间的区别

时间:2014-06-13 12:33:12

标签: winapi mkdir create-directory

Win32下的mkdir(<name>)CreateDirectory(<name>, NULL)之间是否存在差异。

我可以看到,两者都在工作(以同样的方式??)

1 个答案:

答案 0 :(得分:6)

mkdir(推荐的_mkdir是运行时库函数。CreateDirectory是Windows特有的。如果你想要可移植代码,请致电_mkdir。如果你没事的话使您的程序特定于Windows,或者您需要能够添加安全描述符,然后调用CreateDirectory

最有可能的是,Windows的_mkdir实现调用了CreateDirectory(name, NULL)。所以两人最终都做同样的事情。

编辑:_mkdir()的Visual Studio 12实现调用_wmkdir(),然后调用CreateDirectoryW:

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;
}