Aar*_*now 2 c filesystems directory
嘿伙计们,我对C比较陌生,所以请原谅我这是一个愚蠢的问题,但我怎样才能检查FILE是否是一个目录?我有
if (file == NULL) {
fprintf(stderr, "%s: No such file\n", argv[1]);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
并检查节点是否存在,但我想知道它是dir还是文件.我做了一些谷歌搜索,我找不到答案:\
谢谢,
-Aaron
文件名本身不包含任何关于它们是否存在的信息,或者它们是否是与它们同步的目录 - 有人可以从您下面更改它.你想要做的是运行一个库调用,即stat(2),它报告文件是否存在以及它是什么.从手册页中,
[ENOENT] The named file does not exist.
Run Code Online (Sandbox Code Playgroud)
所以有一个错误代码报告(在errno中)该文件不存在.如果它确实存在,您可能希望检查它实际上是一个目录而不是常规文件.您可以通过检查返回的struct中的st_mode来执行此操作:
The status information word st_mode has the following bits:
...
#define S_IFDIR 0040000 /* directory */
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请查看联机帮助页.
struct stat st;
if(stat("/directory",&st) == 0)
printf(" /directory is present\n");
Run Code Online (Sandbox Code Playgroud)