gpt4 book ai didi

c++ - 有没有一种简单的方法可以判断文件流是否打开了目录而不是文件?

转载 作者:太空宇宙 更新时间:2023-11-04 15:10:48 25 4
gpt4 key购买 nike

我正在制作一个 HTTP 服务器,当我得到他们请求的文件路径时,我用以下命令打开它:

returned_file = fopen(path, "r");

即使路径是目录,这(与我的想法相反)也会成功。有没有一种简单的方法来检查 returned_file 流是否是目录而不是文件?

最佳答案

您可以对 fopen 返回的文件描述符使用 fstat。

编辑:这是示例程序:

#include <sys/stat.h>
#include <stdio.h>

void printISDir( FILE* fp, char const * name ) {
int fdes = fileno(fp) ;
struct stat fileInfo ;
fstat(fdes, &fileInfo ) ;
if ( S_ISDIR(fileInfo.st_mode ) ) {
printf("%s: I'm a dir!\n", name ) ;
} else {
printf("%s: I'm a file!\n", name ) ;
}

}

int main( int argc, char** argv ) {
char const * directoryName = "/etc" ;
char const * fileName = "/etc/hosts" ;

FILE* dirFp = fopen(directoryName, "r") ;
FILE* fileFp = fopen(fileName, "r") ;
printISDir( dirFp, directoryName ) ;
printISDir( fileFp, fileName ) ;
fclose(dirFp) ;
fclose(fileFp) ;

return 0 ;
}

关于c++ - 有没有一种简单的方法可以判断文件流是否打开了目录而不是文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1810953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com