gpt4 book ai didi

c - 如何显示uid、大小和文件类型?

转载 作者:行者123 更新时间:2023-12-01 13:23:31 25 4
gpt4 key购买 nike

我正在使用 gcc 32 位编译器。我使用了 stat() 函数,但它没有提供有关文件类型的信息。有什么函数或方法可以找到所有这些吗?

最佳答案

我相信您正在寻找 struct stat 的 st_mode 成员。

来自 stat(2) 联机帮助页:

     The status information word st_mode has the following bits:

#define S_IFMT 0170000 /* type of file */
#define S_IFIFO 0010000 /* named pipe (fifo) */
#define S_IFCHR 0020000 /* character special */
#define S_IFDIR 0040000 /* directory */
#define S_IFBLK 0060000 /* block special */
#define S_IFREG 0100000 /* regular */
#define S_IFLNK 0120000 /* symbolic link */
#define S_IFSOCK 0140000 /* socket */
#define S_IFWHT 0160000 /* whiteout */
#define S_ISUID 0004000 /* set user id on execution */
#define S_ISGID 0002000 /* set group id on execution */
#define S_ISVTX 0001000 /* save swapped text even after use */
#define S_IRUSR 0000400 /* read permission, owner */
#define S_IWUSR 0000200 /* write permission, owner */
#define S_IXUSR 0000100 /* execute/search permission, owner */

sys/stat.h 还提供了以下用于测试文件类型的定义。您可以通过将 st_mode 的值作为参数传递来使用它们:

#define S_ISBLK(m)      (((m) & S_IFMT) == S_IFBLK)     /* block special */
#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) /* char special */
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) /* directory */
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) /* fifo or socket */
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) /* regular file */
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) /* symbolic link */
#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) /* socket */

关于c - 如何显示uid、大小和文件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18318483/

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