免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3462 | 回复: 7
打印 上一主题 下一主题

如何将屏幕输出的东西写到文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-21 15:59 |只看该作者 |倒序浏览
如何将屏幕输出的东西写到文件同时屏幕仍显示出输出的东西
c中怎么实现呢

论坛徽章:
0
2 [报告]
发表于 2005-11-21 16:10 |只看该作者
标准输出也是一个文件呀,同时写入是不可能了。但

FILE* fp = fopen("output",...)
fprintf(stdout, "This is just an example");
fprintf(fp, "This is just an example"..
写两遍不就行了。

论坛徽章:
0
3 [报告]
发表于 2005-11-21 17:43 |只看该作者
lz的意思,是不是要捕获屏幕输出啊,就好像做个监视屏幕的木马。
是吗?

论坛徽章:
0
4 [报告]
发表于 2005-11-21 17:52 |只看该作者
正好我也有类似的一个问题,shell没得到结果,这里不知道有没有人知道?
输出重定向到文件时,由于有缓冲,因而不能实时地看到程序运行的结果
有没有办法实时地把程序运行的日志输出到文件中?
  1. #include <stdio.h>

  2. int main()
  3. {
  4.     for(; ; )
  5.     {
  6.         printf("[%d]hello world!n", getpid());
  7.         sleep(1);
  8.     }
  9. }
复制代码
./a.out  > stdout &
运行后stdout的内容不是实时刷新,而是到缓冲区满的时候(4096)才会写到stdout这个文件中
于是tail -f stdout就会长时间看不到东西

现在不改程序,有没有办法做到?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2005-11-21 17:52 |只看该作者
tee

论坛徽章:
0
6 [报告]
发表于 2005-11-21 20:06 |只看该作者
不行的,好象管道也有缓冲

论坛徽章:
0
7 [报告]
发表于 2005-11-21 20:07 |只看该作者
楼主?
难道你要实现传说中的vim?

论坛徽章:
0
8 [报告]
发表于 2005-11-21 21:26 |只看该作者
5楼的,有缓冲你不会flush啊,不会设成不缓冲啊。
另外,man tee:
The tee utility copies standard input to standard output, making a copy
in zero or more files.  The output is unbuffered.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP