有没有人知道如何将stderr重定向到一个没有缓冲的文件?如果可能的话,你可以向我展示一个简单的Linux代码(Centos 6)的C++语言代码..?!如何将stderr重定向到没有任何缓冲区的文件?
0
A
回答
4
在C
#include <stdio.h>
int
main(int argc, char* argv[]) {
freopen("file.txt", "w", stderr);
fprintf(stderr, "output to file\n");
return 0;
}
在C++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int
main(int argc, char* argv[]) {
ofstream ofs("file.txt");
streambuf* oldrdbuf = cerr.rdbuf(ofs.rdbuf());
cerr << "output to file" << endl;
cout.rdbuf(oldrdbuf);
return 0;
}
0
另一种方式做,这是一个具有以下dup2()
呼叫
#include <iostream>
#include <stdexcept>
#include <stdio.h>
#include <unistd.h>
using std::cerr;
using std::endl;
int main() {
auto file_ptr = fopen("out.txt", "w");
if (!file_ptr) {
throw std::runtime_error{"Unable to open file"};
}
dup2(fileno(file_ptr), fileno(stderr));
cerr << "Write to stderr" << endl;
fclose(file_ptr);
}
+0
最后它会将你的信息写入文件,对吧? –
+0
FirdavsbekNarzullaev是的 – Curious
相关问题
- 1. stderr文件;但没有缓冲
- 2. 如何将ostream对象重定向到临时缓冲区?
- 3. 如何将Java FloatBuffer(或任何缓冲区)保存到文件
- 4. 如何将RUNTIME ERRORS重定向到STDERR?
- 5. 如何将stderr重定向到整个管道的文件?
- 6. Python - 如何将stderr重定向到文件?
- 7. stderr没有被重定向到Solaris shellcript中的文件
- 8. 将恐慌重定向到指定的缓冲区
- 9. 如何到stderr重定向到一个文件中cron作业
- 10. 将cout重定向到使用winapi创建的新缓冲区
- 11. 如何“重置”缓冲区?
- 12. EMACS缓冲区等于文件时如何重置缓冲区修改标志
- 13. Perl:将STDERR重定向到文件而不创建空文件?
- 14. 如何将行缓冲数据从文件重定向到程序而不是块缓冲数据
- 15. 如何将STDOUT和STDERR重定向到Perl中的日志文件?
- 16. 将stdout和stderr重定向到单独的文件和屏幕
- 17. 如何将java.util.logging重定向到文件?
- 18. MediaCodec没有任何可用的输入缓冲区
- 19. 如何将没有索引文件的子文件夹重定向到404?
- 20. 如何使用Unix重定向将滚动文件中的stdout和stderr重定向到
- 21. 将stdout和stderr重定向到函数
- 22. 将子进程stderr重定向到stdout
- 23. 将输出重定向到stderr
- 24. Tomcat将'stderr'内容重定向到'stdout'
- 25. 将STDERR重定向到一个变量
- 26. 如何在groovy中将输出重定向到stderr?
- 27. 如何将STDOUT和STDERR重定向到变量
- 28. 如何将输出从bash脚本重定向到stderr
- 29. nginx的try_files没有任何文件 - 内部重定向
- 30. Log4J:将Stderr消息重定向到主日志文件
'stderr'默认情况下不进行缓冲。 – Barmar
SO不是免费的编码服务。你必须尝试自己解决问题。如果无法正常工作,请发布您尝试的内容,我们会帮助您解决问题。 – Barmar
我不确定,你想要的和命令行中的'2> stderr_file.txt'是一样的吗? 也许你需要在构建它之后通过linux脚本调用你的C++程序,或者甚至在你的调用之后创建和运行你的程序并添加'2>'的脚本。 –