извлечение вывода системной команды с помощью popen

1

Я использую следующий код для извлечения вывода системной команды. Я не задал путь для "pic" в переменной PATH. и я хочу сохранить вывод команды "which pic" и не хочу отображать ее на консоли.

Вот мой код:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main ()
{
    FILE *fp;
  int status;
  char path[1035];
char *command = "which pic";


  /* Open the command for reading. */
  fp = popen(command, "r");
  if (fp == NULL) {
    printf("Failed to run command\n" );
    exit(0);
  }

  /* Read the output a line at a time - output it. */
  while (fgets(path, sizeof(path)-1, fp) != NULL) {
   cout<<"<<<<<<<<<<,"<<endl;
    printf("%s", path);
  }

  /* close */
  pclose(fp);

  return 0;
}

но он отображает следующий вывод в консоли:

which: no pic in(/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin)
  • 0
    Вы на самом деле не сформулировали вопрос, но один комментарий , который , скорее всего, это выход , which идет в стандартные ошибки вместо стандартного вывода. Вы хотите захватить оба.
  • 0
    cout << и printf в одном коде!
Показать ещё 1 комментарий
Теги:

1 ответ

1

Запустите "which pic 2>&1" качестве вашей команды. Вы хотите захватить весь вывод, из which, включая его ошибки (которые отправляются в stderr).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню