【发布时间】:2012-01-06 04:38:16
【问题描述】:
我的程序的目的是获取字符串中的 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 函数返回一个空字符串。我需要结果字符串中的输出。
【问题讨论】: