LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1456|回复: 8

linux行缓存问题

[复制链接]
发表于 2006-9-18 21:38:23 | 显示全部楼层 |阅读模式
linux c写的终端运行的程序,输入输出都是于行缓存进行的.
比如

  1. main()
  2. {
  3.       printf("***********");
  4.       sleep(5);
  5.       printf("%%%%%%%\n");
  6. }
复制代码


程序运行后并不会打印**********
再是等待5秒,再一起输出
***********%%%%%%%%
这个可以理解.



可是

  1. main
  2. {
  3.        printf("***********");
  4.        getchar();                                 //或者用scanf()
  5.        printf("%%%%%%%%\n");
  6. }
复制代码

为什么在没有输入等待之前就打印了*************咧?
发表于 2006-9-18 22:08:05 | 显示全部楼层
printf("***********");
fflush(stdout);
getchar();                                 //或者用scanf()
printf("%%%%%%%%\n");
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-18 23:13:04 | 显示全部楼层
to 楼上:

不管用不用fflush(stdin).都会先显示************

你没听懂我楼上说的问题吧
回复 支持 反对

使用道具 举报

发表于 2006-9-19 00:50:44 | 显示全部楼层
Post by Lolita
printf("***********");
fflush(stdout);
getchar();                                 //或者用scanf()
printf("%%%%%%%%\n");

I guess you mean this:
  1. printf("***********");
  2. fflush(stdout);
  3. sleep(5)
  4. printf("%%%%%%%%\n");
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-9-19 02:26:53 | 显示全部楼层

  1. main()
  2. {
  3.        printf("***********");
  4.        getchar();                                 //或者用scanf()
  5.        printf("%%%%%%%%\n");
  6. }
复制代码

我的问题是:

为什么在没有输入等待之前就打印了*************咧?
回复 支持 反对

使用道具 举报

发表于 2006-9-19 03:18:46 | 显示全部楼层
reading from the input buffer will flush the output buffer.
please check the description part of "man stdio"
回复 支持 反对

使用道具 举报

发表于 2006-9-19 09:30:03 | 显示全部楼层
现在才看懂楼主想问什么。。。。 :rolleyes:
回复 支持 反对

使用道具 举报

发表于 2006-9-19 11:46:54 | 显示全部楼层
在 接受输入之前
应该是 会强制刷新 缓存罢
回复 支持 反对

使用道具 举报

发表于 2006-9-19 13:06:03 | 显示全部楼层
谢谢!>>!>>!!终于懂了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表