有些场景需要通过执行cmd命令,并且获取返回的结果。有三种方法:
- boost.process
- windows api
- _popen
1.boost.process
#include "boost/process.hpp"
#include "boost/process/windows.hpp"
std::string GetCmdResult(std::string cmd)
{
namespace bp = boost::process;
std::string strResult;
std::error_code ec;
bp::ipstream is;
bp::system(cmd, bp::std_out > is, ec,boost::process::windows::create_no_window);
if (!ec)
{
char sz[1024] = { 0 };
is.read(sz, 1024);
strResult = sz;
}
return strResult;
}
2.windows api
std::string GetCmdResult(std::string cmd)
{
std::string strResult;
SECURITY_ATTRIBUTES saPipe;
saPipe.nLength = sizeof(SECURITY_ATTRIBUTES);
saPipe.lpSecurityDescriptor = NULL;
saPipe.bInheritHandle = TRUE;
HANDLE hReadPipe, hWritePipe;
BOOL bSuccess = CreatePipe(&hReadPipe,
&hWritePipe,