簡體   English   中英

將系統(文件)命令的輸出存儲為C中的字符串

[英]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");

之后,您可以使用fopenfscanf或任何您想要讀取文件內容的內容。

當然,在嘗試讀取臨時文件之前,你將檢查system()的返回值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM