要获取文件类型,我们可以执行命令
system("file --mime-type -b filename");
输出显示在terminal.But无法使用命令
存储文件类型char file_type[40] = system("file --mime-type -b filename");
所以如何使用系统(文件)函数将文件类型存储为字符串。
答案 0 :(得分:4)
请参阅system
的手册页:它不会返回执行的命令的输出(但是错误代码或命令的返回值)。
你想要的是popen
。它返回一个FILE*
,您可以使用它来读取命令的输出(有关详细信息,请参阅popen
手册页。)
答案 1 :(得分:4)
您可以像这样使用popen
:
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
FILE *fp;
char file_type[40];
fp = popen("file --mime-type -b filename", "r");
if (fp == NULL) {
printf("Failed to run command\n" );
exit -1;
}
while (fgets(file_type, sizeof(file_type), fp) != NULL) {
printf("%s", file_type);
}
pclose(fp);
return 0;
}
答案 2 :(得分:2)
嗯,我想到的第一个也是最简单的方法是将输出重定向到临时文件,然后将其读入char缓冲区。
system("file --mime-type -b filename > tmp.txt");
之后,您可以使用fopen
和fscanf
或任何您想要阅读文件内容的内容。
当然,在尝试读取临时文件之前,你将检查system()的返回值。