如何使用Visual Studio 2005获取两个C++程序之间的返回值
现在,我有两个程序A和B。程序A使用系统执行程序B 但是,程序B使用写入文件的方式返回其执行结果 程序A是否有更好的方法获取程序B的返回值 比如说 在程序A中如何使用Visual Studio 2005获取两个C++程序之间的返回值,c++,c,visual-studio,C++,C,Visual Studio,现在,我有两个程序A和B。程序A使用系统执行程序B 但是,程序B使用写入文件的方式返回其执行结果 程序A是否有更好的方法获取程序B的返回值 比如说 在程序A中 int main(){ system("B.exe"); readFile(finePath); //do something return 0; } 在程序B中 int main(){ char temp[1024]; //do something writeFile(temp)
int main(){
system("B.exe");
readFile(finePath);
//do something
return 0;
}
在程序B中
int main(){
char temp[1024];
//do something
writeFile(temp);
return 0;
}
方法1
尝试使用ERRORLEVEL系统变量检查任何正在运行的程序的返回值
注:
ERRORLEVEL是一个系统变量,因此将其用作
方法2
您可以使用属性。管道是一种相对简单的跨平台方法,无需到处创建临时文件,也无需处理由此产生的其他问题
static string pcommand(const string& cmd)
{
FILE* stream = _popen(cmd.c_str(), "r");
string data;
if (stream)
{
while (!feof(stream))
{
const int buffer_size = 256;
char buffer[buffer_size];
if (fgets(buffer, buffer_size, stream))
data.append(buffer);
}
_pclose(stream);
}
return data;
}
int main()
{
string 'str' = pcommand("dir");
// 'str' now contains the results sent to stdout
}
向我们展示您尝试过的简约代码。请看-也许您会在其中找到一些有用的信息。术语返回值对我来说有点混淆,所以请确保。你不是在问程序B的状态码吧?问题是关于获得B产生的各种结果/输出,对吗?原因状态代码通常由系统直接返回。看我更新了一个例子。请帮帮我。是的:。我认为通常在其他平台上,可以避免使用下划线前缀。