现在,我有两个程序 A 和 B。程序 A 使用 system()
来执行程序 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);
return 0;
}
最佳答案
管道是一种相对简单的跨平台方法,无需在各处创建临时文件,也不必处理这样做可能产生的其他问题。
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
}
关于c++ - 如何使用 Visual Studio 2005 获取两个不同 C++ 程序之间的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29982991/