linux 系统 stat() 方法工作不正常

linux system stat() method is not working correctly

当我这样写路径时,我的 stat() 正在工作。

char homePath[] = "../../usr/http/";

if(stat("usr/bin",&file_info) == -1)
{
    strcat(sendMessage, path);
    strcat(sendMessage, "\n\nHTTP/1.1 400 Not Found\n");
    return 0;
}

但是下面的代码不起作用。 stat() 总是 returns -1。 我认为 strcat 是问题所在。但是当我检查合并的路径字符串时,似乎没问题。请让我知道如何修复它。

    strcat(path, homePath);
    strcat(path, target);


    if(stat(path,&file_info) == -1)
    {
        strcat(sendMessage, path);
        strcat(sendMessage, "\n\nHTTP/1.1 400 Not Found\n");
        return 0;
    }

如何设置homePath和target?

格式看起来不错:http://linux.die.net/man/2/stat

路径的第一个字符可能无法打印。使用 strcpy。更安全的是,使用 strncpystrncat.

strncpy(path, homePath, sizeof(path));
strncat(path, target, sizeof(path) - strnlen(path, sizeof(path)));

阅读 Linux 手册页了解为什么首选 strn 版本。