linux system stat()方法无法正常工作
当我这样写路径时,stat()正在工作linux system stat()方法无法正常工作,linux,string,system,stat,strcat,Linux,String,System,Stat,Strcat,当我这样写路径时,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()总是返回-1。 我认为strcat是个问题。但是,当
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()总是返回-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
格式化看起来很好:路径的第一个字符可能无法打印。使用strcpy。使用strncpy和strncat更安全
strncpy(path, homePath, sizeof(path));
strncat(path, target, sizeof(path) - strnlen(path, sizeof(path)));
阅读Linux手册页,了解为什么首选strn版本。这是非常正常的形式。homepath=“../usr/http/”target=“test”以及在调用stat之前何时打印路径?看起来还好吗?当然,我试过了。看起来还可以。我想知道它是否包含不可见的数据。好吧,你可能想一次打印一个字符,以确保没有任何有趣的事情发生。但是,在执行此操作之前,请检查ernno以验证错误,#包括并调用:printf(“统计错误为:%s\n”,strerror(errno));因为stat应该将errno设置为特定的错误值。您是否初始化了路径?最后的
sendMessage
的内容是什么?当然可以。我做到了。字符路径[200]=“”;尝试使用调试器运行并确保字符串正确。另外,当stat返回错误(-1)时,使用strerror\u r()获取错误的原因。