博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux单线程切换屏蔽stdout小组件
阅读量:5214 次
发布时间:2019-06-14

本文共 1330 字,大约阅读时间需要 4 分钟。

1 #ifndef PRINT_H 2 #define PRINT_H 3  4 #include 
5 class ReplaceStdout 6 { 7 public: 8 ReplaceStdout(); 9 ~ReplaceStdout();10 bool isOK() { return _ok; }11 private:12 bool _ok;13 };14 void print(const char* format, ...);15 #endif
print.h

 

1 #include "print.h" 2 #include 
3 #include
4 5 const static char* name = "/dev/null"; 6 static FILE* std_file = fopen(name, "w"); 7 8 bool replace() 9 {10 if (std_file) {11 fflush(stdout);12 std::swap(stdout->_fileno, std_file->_fileno);13 return true;14 }15 return false;16 }17 18 ReplaceStdout::ReplaceStdout():19 _ok(replace())20 {21 }22 23 ReplaceStdout::~ReplaceStdout()24 {25 replace();26 }27 28 void print(const char* format, ...)29 {30 va_list args;31 va_start(args, format);32 vfprintf(1 == stdout->_fileno ? stdout : std_file,33 format, args);34 va_end(args);35 }
print.cpp

 

1 #include "print.h" 2  3 int main(int argc, char* argv[]) 4 { 5     ReplaceStdout replace; 6     printf("printf hello\n"); 7     print("print hello\n"); 8     //{ ReplaceStdout replace; } 9     ReplaceStdout recover;10     printf("printf world\n");11     print("print world\n");12     return 0;13 }
main

 

转载于:https://www.cnblogs.com/-chaos/p/3335836.html

你可能感兴趣的文章
IntelliJ IDEA 12集成Tomcat 运行Web项目
查看>>
java,多线程实现
查看>>
个人作业4-alpha阶段个人总结
查看>>
android smack MultiUserChat.getHostedRooms( NullPointerException)
查看>>
递归-下楼梯
查看>>
实用的VMware虚拟机使用技巧十一例
查看>>
监控工具之---Prometheus 安装详解(三)
查看>>
Azure Iaas基础之---创建虚拟机
查看>>
不错的MVC文章
查看>>
网络管理相关函数
查看>>
IOS Google语音识别更新啦!!!
查看>>
20190422 T-SQL 触发器
查看>>
[置顶] Linux终端中使用上一命令减少键盘输入
查看>>
poj1422_有向图最小路径覆盖数
查看>>
BootScrap
查看>>
[大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化
查看>>
WEB_点击一百万次
查看>>
CodeForces - 878A Short Program(位运算)
查看>>
路冉的JavaScript学习笔记-2015年1月23日
查看>>
Mysql出现(10061)错误提示的暴力解决办法
查看>>