好的,所以这就是我要做的事情:
assert
检查中使用它。这怎么可能?
注意:
伙计们,如果我误导你,对不起。我正在寻找D的解决方案。
答案 0 :(得分:2)
这是一种使用管道和线程(与建议的副本不同,不限于预定义的缓冲区大小或存在缓冲区溢出漏洞的风险)的方法:
std.process.pipe
stdout
设置为管道的写入端(首先备份)stdout
答案 1 :(得分:0)
嗯,我只是觉得我自己找到了一种工作方式:
import std.stdio;
import std.conv;
import std.file;
//
string getOutput()
{
auto initialStdout = stdout;
// Redirect output to file
string tmpfile = "tmp/test.out";
stdout.open(tmpfile, "wt");
//
// Do whatever you want to,
// that generates some output
//
stdout = initialStdout; // Restore stdout to what it was
return to!string(std.file.read(tmpfile)); // Return output
}
答案 2 :(得分:0)
只需使用std.process.executeShell即可。 Phobos文档中的示例足以让您完成所需的操作。