我想知道一个文件是一个目录还是一个带有stat的常规文件:
#define _DEFAULT_SOURCE
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int is_regular_file(const char *path)
{
struct stat path_stat;
stat(path, &path_stat);
return S_ISREG(path_stat.st_mode);
}
我在Mac和Linux上尝试,当我打印S_ISREG(path_stat.st_mode)时,总是等于1,path_stat.st_mode总是等于16877。
最佳答案
16877
是octal40755
,它表示具有权限的目录(octal40000
)(用户具有完全权限,其他人都具有读取和遍历权限)。如前所述,755
和stat
手册页很有用。
例如,这里是一个屏幕截图,其中mydirectory-editor显示八进制模式(一个选项),而不是通常的符号模式: