[英]Store output of system(file) command as a string in 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 <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;
}
嗯,我想到的第一個也是最簡單的方法是將輸出重定向到臨時文件,然后將其讀入char緩沖區。
system("file --mime-type -b filename > tmp.txt");
之后,您可以使用fopen
和fscanf
或任何您想要讀取文件內容的內容。
當然,在嘗試讀取臨時文件之前,你將檢查system()的返回值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.