想我已经得到了我的代码要改向第一输出到file1和第二到file2。那可能吗?分割输出重定向像</p> <pre><code>#include <iostream> using namespace std; int main() { cout << "Redirect to file1" << endl; cout << "Redirect to file2" << endl; return 0; } </code></pre> <p>
我认为在C,fclose(stdout)
和重新打开stdout
可能会帮助,但我不知道如何重新打开它或它是否工作。
谢谢
更新:什么?
我有一个程序A,它读取来自用户的输入并生成相应的输出。现在我想检查它是否正确,我有一个为A生成输入的程序B,以及正确的输出。 B将一次生成一组测试数据。我将有数千次测试。
在我的机器上,千次./B > ``mktemp a.XXX``
比使用ofstream
的效果更好。数千次使用fstream
,我的硬盘驱动器指示灯闪烁。但不是在重定向到临时文件时。
UPDATE2:
在C++中,似乎当时的回答是cerr
一起cout
。
C怎么样,除了stderr
,我可以关闭stdout
并重新打开吗?
在POSIX(Linux的/ OSX/BSD)外壳可以重定向'stdout'和'stderr'不同。这是你通过使用'std :: cout'和'std :: cerr'来完成的唯一方法。在Windows控制台中,我不认为这是可能的。另外,您不能将旧的C stdio函数与C++流混合。 –
@Pileborg谢谢。如果我'fclose(stdout)''有没有办法重新打开'stdout'?在Linux中说,我可以使用'fopen(...)'重新打开'stdout'吗?它有什么参数?谢谢 – gongzhitaao
这是可能的,但涉及知道它首先连接的TTY设备,并且您可能必须使用“open”系统调用,然后使用“fdopen”。 –