Chinaunix

标题: 如何将屏幕输出的东西写到文件 [打印本页]

作者: aaaaal    时间: 2005-11-21 15:59
标题: 如何将屏幕输出的东西写到文件
如何将屏幕输出的东西写到文件同时屏幕仍显示出输出的东西
c中怎么实现呢
作者: renstone921    时间: 2005-11-21 16:10
标准输出也是一个文件呀,同时写入是不可能了。但

FILE* fp = fopen("output",...)
fprintf(stdout, "This is just an example");
fprintf(fp, "This is just an example"..
写两遍不就行了。
作者: zy116    时间: 2005-11-21 17:43
lz的意思,是不是要捕获屏幕输出啊,就好像做个监视屏幕的木马。
是吗?
作者: yzc2002    时间: 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就会长时间看不到东西

现在不改程序,有没有办法做到?
作者: flw    时间: 2005-11-21 17:52
tee
作者: yzc2002    时间: 2005-11-21 20:06
不行的,好象管道也有缓冲
作者: 1jjk    时间: 2005-11-21 20:07
楼主?
难道你要实现传说中的vim?
作者: ktdid    时间: 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.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2