为了账号安全,请及时绑定邮箱和手机立即绑定

linux下重定向前后printf的输出缓存机制怎么变化?

linux下重定向前后printf的输出缓存机制怎么变化?

噜噜哒 2018-10-23 08:00:42
linux下重定向前后printf的输出缓存机制怎么变化
查看完整描述

1 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
fflush(stdout);
setvbuf(stdout,NULL,_IONBF,0);
printf("test stdout\n");
int save_fd = dup(STDOUT_FILENO); // 保存标准输出 文件描述符 注:这里一定要用 dup 复制一个文件描述符. 不要用 = 就像是Winodws下的句柄.
int fd = open("test1.txt",(O_RDWR | O_CREAT), 0644);
dup2(fd,STDOUT_FILENO); // 用我们新打开的文件描述符替换掉 标准输出
printf("test file\n");

//再恢复回来标准输出. 两种方式
//方法1 有保存 标准输出的情况
//dup2(save_fd,STDOUT_FILENO);

//方法2 没有保存 标准输出的情况
int ttyfd = open("/dev/tty",(O_RDWR), 0644);
dup2(ttyfd,STDOUT_FILENO);
printf("test tty\n");
}



查看完整回答
反对 回复 2018-11-14
  • 1 回答
  • 0 关注
  • 1018 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信