C - popen:如何捕获无效命令?

时间:2017-12-10 22:10:44

标签: c popen

我正在尝试运行通过popen发送的命令,但是如果它无效(例如kfjhsfdhj)我想发送消息而不是输入我的else语句。

根据我的理解,如果发送了无效命令,则从popen返回NULL(我可能错了!)。

我尝试了以下代码,但它似乎不能像我想要的那样工作,任何想法?

char ans[10000];
FILE* file = popen("blabla", "r");

if(file == NULL){
  printf("The command you wish to execute is invalid.\n");
  //I want this output and the else to not execute
} else {
  char buffer[10000];

  while(fgets(buffer, sizeof(buffer), file) != NULL){
    strcat(ans,buffer);
  }

  pclose(file);
  //export data to file
  FILE *result = fopen("results.txt", "a");

  if(result != NULL){
    num+=1;
    fprintf(result, "Query no. %d:\n", num);
    fputs(ans, result);
    fclose(result);
  } else {
    printf("Error with result file!\n);
  }

}

当我运行它时,我得到sh: 1: blabla: not found并且我在结果文件中输入Query no. X而没有任何内容。另一个命令将正确附加到该文件。

使用有效命令按预期工作。

0 个答案:

没有答案