выполнение команды через popen в linux - PullRequest
0 голосов
/ 04 марта 2020

Я выполняю команды через popen (), system () в моем приложении c ++. Каждая команда выполняется успешно и получает результаты, как и ожидалось. Но всякий раз, когда я пытаюсь выполнить какую-либо команду с помощью lpstat (отображает информацию о принтерах и заданиях), я не получаю никаких результатов.

Примечание. Я использую один и тот же код в своем тестовом приложении, и он работает нормально. lpstat дает результаты, как и ожидалось. Так есть что-нибудь, что блокирует выполнение команды lpstat?

Заранее спасибо !!!

Я вызываю этот метод в main, передавая команду "lpstat - W all "или любая команда lpstat с различными параметрами, которые не выполняются. Где бы ни работали другие команды.

вот мой код Пример:

**

std::string ExecQueryRun(std::string lcCommand)
{
    std::string Result;   
    FILE * stream;
    if (lcCommand.empty())
        return "Bash Command is empty ";

    char ReadBuffer[MAX_BUFFER + 1] = {0};
    lcCommand.append(" 2>&1");
    stream = popen(lcCommand.c_str(), "r");
    if (stream)
    {
        while (!feof(stream))
        {
            if (fgets(ReadBuffer, MAX_BUFFER, stream) != NULL)
            {
                Result.append(ReadBuffer);
            }
        }
        pclose(stream);
    }
    else
    {
        cout << "popen fails in ExecQueryRun " << endl;
    }


    return Result;
}

void main()
{
   cout << "Result :: " << ExecQueryRun("lpstat -W all") << endl;

   /* some other code here */

  getchar();
  return;
}

**

...