如何知道文件的类型?

时间:2019-05-19 22:16:14

标签: c file

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

我一直在搜索,并且看到过其他语言的答案,但不是C语言。

预期输出为char,指示文件类型。 关于如何做的任何线索?我应该使用任何功能吗?

1 个答案:

答案 0 :(得分:3)

也许有帮助,它应该可以工作。

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)。