私の目的は、文字列にcmdと出力を得ることですが、奇妙な問題があります:_popen結果:プログラムの特殊なケース
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関数は空の文字列を返します。結果の文字列にその出力が必要です。