Я выполняю команды через 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;
}
**