Я только что реализовал это для проекта, над которым я работаю. libmagic - это то, что вы ищете. На RHEL / CentOS его предоставляют file-libs и file-devel. Debian / Ubuntu выглядит как libmagic-dev.
http://darwinsys.com/file/
Вот пример кода:
#include <stdio.h>
#include <magic.h>
int main(int argc, char **argv){
const char *mime;
magic_t magic;
printf("Getting magic from %s\n", argv[1]);
magic = magic_open(MAGIC_MIME_TYPE);
magic_load(magic, NULL);
magic_compile(magic, NULL);
mime = magic_file(magic, argv[1]);
printf("%s\n", mime);
magic_close(magic);
return 0;
}
Приведенный ниже код использует магическую базу данных по умолчанию / usr / share / misc / magic. После того, как вы установили dev-пакеты, man-страница libmagic будет очень полезна. Я знаю, что это старый вопрос, но я нашел его в поиске того же ответа. Это было мое предпочтительное решение.