我正在用 C++ 进行系统调用:
system( "g++ file1.cpp -o test" );
我正在尝试将命令行中的结果放入一个std::string
对象中。我这样做的原因是在 g++ 失败的情况下分析 g++ 的输出,因为 cpp 中有错误。这是我为此构建的方法:
std::string CmdLineCall( std::string cmd )
{
FILE* pipe = _popen( cmd.c_str(), "r");
if( pipe == NULL )
{
return "error";
}
char* buffer;
long bufferSize = cmd.size();
size_t code;
std::string result;
buffer = ( char* )malloc( sizeof( char ) * bufferSize );
if( buffer == NULL )
{
return "error";
}
code = fread( buffer, 1, sizeof( buffer ), pipe );
if( code != bufferSize )
{
return "error";
}
result = buffer;
return result;
}
我已经对其进行了调试,它一直运行到最后,但结果 =“”。
我试过一个简单的system( "pause" )
命令,它可以工作,但它不起作用。由于我的 cpp 文件有缺陷,g++ 调用失败是否与此有关?
谢谢