烹饪文件模式代表Linux中的目录

时间:2015-11-03 16:22:06

标签: c linux

在Linux中我们有'模式'对于每个文件/文件夹

如果我们这样做:

struct stat buf;
fstat("file_or_folder_name", &buf); 

然后fstat函数将用大量信息填充buf,包括st_mode;

我知道这个st_mode包含有关权限和文件类型的信息(告诉它是文件还是文件夹)

所以我想知道如果我必须从头开始生成/制作/烹饪st_mode,我怎样才能确保它会告诉它#s; 一个文件和其他时间它会告诉它是一个文件夹?我将通过这样做来知道:S_ISDIR(buf.st_mode)

例如:

mode_t my_file_mode = S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH;

但这仅说明了许可。 我想让它告诉文件类型。

此外,我还要填写其他成员:struct stat 那么我可以为st_dev和st_ino等分配哪些数据呢?

实际上该文件不存在于磁盘上,我将从云中读取对象,我将告诉调用者它是文件还是文件夹以及其他信息。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找S_IFMT

它在mode_t中可用。

预定义值为:

S_IFBLK       Block special.
S_IFCHR       Character special.
S_IFIFO       FIFO special.
S_IFREG       Regular.
S_IFDIR       Directory.
S_IFLNK       Symbolic link.
S_IFSOCK      Socket.

Reference