C(Linux和Windows)中的跨平台目录路径验证

时间:2013-08-21 12:30:46

标签: c linux windows cross-platform

我有一个C函数,它接受目录路径作为字符串。该函数在给定路径上创建一个目录。

int create_directory(const char *path) {
    // given path may be absolute or relative
    // step 1:-need to validate the given path(cross platform for both Linux and windows)
    // what are the criteria for path validation?

    // step 2:- check permission about user accessibility ,means can not create directory, if path is   like /usr/bin  or /root).but in root login then we create.
    So what are the criteria for validation?

    // step 3:-if directory, subdirectory already exist at the path, then return?

    // step 4:-if not exists then create directory ;  
}

基本上我在步骤1和步骤2中遇到问题。我无法确定路径验证的确切标准是什么。

3 个答案:

答案 0 :(得分:3)

检查给定路径的有效性的最佳方法是尝试使用它进行操作。操作系统会为您提供错误代码(errnoGetLastError()或其他内容),您可以使用它来确定无法执行此操作的原因。

答案 1 :(得分:0)

我会让底层操作系统执行验证。

创建目录,然后检查错误代码。

答案 2 :(得分:0)

Linux使用“/”分隔给定路径中的目录,而Windows使用“\”加上几乎所有的窗口路径都以C:\\或(D:\\开头,它们无关紧要重要的是:)所以你可以使用strchr()来查找这些标志,或者你可以使用perror()这样更容易(你必须包括<errno.h> })