Как узнать тип файла? - PullRequest
0 голосов
/ 20 мая 2019

Мне нужно закодировать функцию типа char, которая возвращает тип файла. Мне подсказывают, как использовать mode_t, но я не знаю, как это сделать.

Я искал и видел ответы на других языках, но не на C.

Ожидается, что будет вывод char, указывающий тип файла. Любая подсказка о том, как это сделать? Это какая-то функция, которую я должен использовать?

1 Ответ

3 голосов
/ 20 мая 2019

Может быть, это помогает, это должно работать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...