[问题] 每秒检查档案

楼主: jacky1989   2016-12-02 21:57:24
开发平台(Platform)(Ex: Win10, Linux, ...) 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC
问题(Question):
我设计一个程式每秒去检查某档案是否存在
每10秒显示目前经过秒数
预期的正确结果(Expected Output):
每秒显示一次资讯
错误结果(Wrong Output):
10秒才一次性显示全部资讯
程式码(Code):(请善用置底文网页, 记得排版)
int main(){
FILE *fid_rd;
int count=0,accu=0;
while(1){
fid_rd=fopen(".running","r");
sleep(1);
if(!fid_rd){
printf("finish\n");
break;
}else{
printf(".");
if(count==9){
count=0;
accu+=10;
printf("Simulator has took %d secs\n",accu);
}else
count++;
fclose(fid_rd);
}
return 0;
}
作者: james732 (好人超)   2016-12-02 22:24:00
你需要的可能是fflush (乱猜)
作者: stupid0319 (征女友)   2016-12-02 22:38:00
sleep(1)?sleep(999)还差不多
作者: Schottky (顺风相送)   2016-12-02 22:57:00
printf("."); 后面加 fflush(stdin);printf("."); 后面加 fflush(stdin);还有你为什么要先 sleep 再检查 fopen 是否成功...
作者: shadow0326 (非议)   2016-12-02 23:07:00
没有newline就要自己flush
作者: pttworld (批踢踢世界)   2016-12-02 23:30:00
睡眠时间太短机器可能跟不上,这开档。int..
作者: MOONY135 (谈无欲)   2016-12-02 23:38:00
1是一毫秒喔 至少要800毫秒以上
作者: james732 (好人超)   2016-12-03 00:13:00
https://linux.die.net/man/3/sleep sleep应该是这个?https://goo.gl/CX1x2j 跟这个不一样
作者: pttworld (批踢踢世界)   2016-12-03 00:22:00
关键字:gcc file exists
作者: LPH66 (-6.2598534e+18f)   2016-12-03 00:43:00
什么 fflush(stdin)... 不要乱教
作者: Schottky (顺风相送)   2016-12-03 00:44:00
对不起... 打错字...
作者: LPH66 (-6.2598534e+18f)   2016-12-03 00:44:00
这里要 fflush 也是 fflush(stdout), 这个是可以用的
作者: x000032001 (版废了该走了)   2016-12-03 15:29:00
因为stdout是line buffered

Links booklink

Contact Us: admin [ a t ] ucptt.com