c - 如何知道文件的类型?

标签 c file

我必须编写一个返回文件类型的 char 类型的函数。我得到了使用 mode_t 的线索,但我真的不知道该怎么做。

我一直在搜索,我看到了其他语言的答案,但没有看到 C 语言的答案。

输出应该是一个char,表示文件类型。 关于如何做的任何线索?我应该使用它吗?

最佳答案

也许这有帮助,它应该有效。

char FileType (mode_t m) {
    switch (m & S_IFMT) {               //bitwise AND to determine file type
        case S_IFSOCK:  return 's';     //socket
        case S_IFLNK:   return 'l';     //symbolic link
        case S_IFREG:   return '-';     //regular file
        case S_IFBLK:   return 'b';     //block device
        case S_IFDIR:   return 'd';     //directory
        case S_IFCHR:   return 'c';     //char device
        case S_IFIFO:   return 'p';     //pipe
        default: return '?';            //unknown
    }
}

S_IFMT 是文件类型的位掩码(参见 man stat)。

关于c - 如何知道文件的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56212434/

相关文章:

c - 应该将任何 C 文件作为二进制文件打开

c++ - 在一个解决方案中使用多个 .cpp 文件的目的是什么?

c - 数组结构无法正常工作

c - 公共(public)标志不适用于库(cmake)

java - 如何在 Java servlet 中同步文件访问?

file - Lisp if 语句 - emacs 初始化文件 ".emacs"

php - 如何在 PHP 中序列化和反序列化大文件?

c - 字符串计数器的词频有时会出错

c++ - 如何与多个翻译单元共享一个静态变量?

c - 从 strtok 向其传递字符串数组后,execvp 返回错误 "No such file or directory"