Моя цель программы - получить вывод cmd в строке, но есть странная проблема:
string ChangeStatus()
{ status = exec("net stop mysql");
cout<<status;
return status;
}
string exec(char* cmd)
{
pipe = _popen(cmd, "r");
if (!pipe){
sprintf(returnErrorMSG,"ERROR");
return returnErrorMSG;
}
std::string result = "";
while(!feof(pipe))
{
if(fgets(buffer, 128, pipe) != NULL)
{
result +=buffer;
}
}
_pclose(pipe);
return result;
}
Моя цель - перехватить вывод команды (переданный в качестве параметра в execфункция, в строковую переменную -
Теперь проблема в том, Скажем, mysql в настоящее время работает: затем, если я вызываю функцию exec ("net stop mysql"), она пытается остановить mysql и дать результатСтрока результата, которая возвращается из функции. Строка результата содержит - «Служба Mysql была успешно запущена» .... это нормально.
Но если mysql в данный момент запущен, и я вызываю exec ("net start mysql "), затем он говорит" Запрошенный сервис уже запущен "- что полностью оправдано. Моя точка зрения заключается в том, что этот оператор должен быть в строке результата в функции exec. На этот раз строка результата просто пуста, аФункция exec возвращает пустую строку. Мне нужен этот вывод в строке результата.