将系统(文件)命令的输出存储为C中的字符串
要获取文件类型,我们可以执行命令
system("file --mime-type -b filename");
输出显示在terminal.But无法使用该命令存储文件类型
char file_type[40] = system("file --mime-type -b filename");
那么如何使用system(file)函数将文件类型存储为字符串。
请参见system
的手册页:它不返回已执行命令的输出(但是返回错误代码或命令的返回值)。
你想要的是popen
。 它返回一个FILE*
,您可以使用它来读取命令的输出(有关详细信息,请参阅popen
手册页)。
你可以像这样使用popen
:
#include #include 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; }
嗯,我想到的第一个也是最简单的方法是将输出重定向到临时文件,然后将其读入char缓冲区。
system("file --mime-type -b filename > tmp.txt");
之后,您可以使用fopen
和fscanf
或任何您想要读取文件内容的内容。
当然,在尝试读取临时文件之前,你将检查system()的返回值。