QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: changrui8210

关于sleep()的一个古怪问题,求助

[复制链接]
发表于 2005-4-21 23:18:38 | 显示全部楼层
[quote:0f4279ae03="笑"][quote:0f4279ae03="changrui8210"]大师呀,滔滔江水
不过我觉得循环中哪句在前是一样的吧[/quote]没看前面说输出缓冲那段吗? [/quote]
聪明! :D
回复

使用道具 举报

发表于 2005-4-21 23:19:44 | 显示全部楼层
C++精髓里将地有关内存泄漏的问题太好了!!!!!!!
回复

使用道具 举报

发表于 2005-4-21 23:23:26 | 显示全部楼层
到群里找我聊吧:8731734
我的昵称是:Captain Cook
回复

使用道具 举报

发表于 2005-4-21 23:24:37 | 显示全部楼层
不过群不是我的
回复

使用道具 举报

发表于 2005-4-21 23:48:44 | 显示全部楼层
你可以强制输出
#include <stdio.h>
main()
{
int i;
for(i=0;i<5;i++)
{
printf("hello");
fflush(stdout) ;
sleep(1);
}
}
回复

使用道具 举报

发表于 2005-4-21 23:59:53 | 显示全部楼层
可以阿,但多一个系统调用,性能受影响了啊 :neutral:
回复

使用道具 举报

发表于 2005-4-22 00:13:41 | 显示全部楼层
来群里聊吧!
回复

使用道具 举报

发表于 2005-4-22 20:49:57 | 显示全部楼层
首先,一个系统调用相比这种 I/O,效率影响几乎可以被忽略。
其次,在程序运行完 500 秒后(当然,我改成了 5 ……)会一次输出所有内容,证明这些东西都是在缓冲中停留的。你一定是自己等不及所以 C-c 了吧
回复

使用道具 举报

发表于 2005-4-22 20:55:07 | 显示全部楼层
在程序正常结束的时候(譬如 return from main, call to exit),会自动 fflush 所有 stdlib 的 FILE* 句柄,因此当程序结束的时候会一起输出这些内容。否则,默认的行缓冲规则规定只有 \n 的时候才输出。
回复

使用道具 举报

发表于 2005-4-22 21:39:42 | 显示全部楼层
#include <stdio.h>
#include <unistd.h>

main()
{
int i;
for(i=0;i<5;i++)
{
sleep(1);
printf("hello\n\b");
}
}
回复

使用道具 举报

发表于 2005-4-22 21:56:56 | 显示全部楼层
多打了一个\b
回复

使用道具 举报

发表于 2005-4-23 00:46:16 | 显示全部楼层
\n 触发了默认的行缓冲刷新罢了。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-6 07:40 , Processed in 0.051725 second(s), 12 queries .

© 2021 Powered by Discuz! X3.5.

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