在linux平台下,看下面两段代码,试分析分别输出几个"-"。
#include<stdio.h>
#include<unistd.h>
int main(void)
{
int i;
for(i = 0; i < 2; ++i)
{
fork();
printf("-");
}
return 0;
}#include<stdio.h>
#include<unistd.h>
int main(void)
{
int i;
for(i = 0; i < 2; ++i)
{
fork();
printf("-\n");
}
return 0;
}unix上标准输入输出都是带有缓存的,一般是行缓存。对于标准输出,需要输出的数据并不是直接输出到终端上,而是首先缓存到某个地方,当遇到行刷新标志或者该缓存已满的情况下,才会把缓存的数据显示到终端设备上。ANSI C中定义换行符‘\n‘可以认为是行刷新标志。所以,printf函数没有带‘\n‘是不会自动刷新输出流,直至缓存被填满。
即:
"\n"是行刷新标识
如果有"\n",则立即输出并清空缓存
如果没有"\n",则等到缓冲区满了后再输出
--------------------------------------------------------------------------------------
第一个函数没有"\n",则输出需等到缓冲区满或进程结束时输出
linux fork() printf("-") printf("-\n"),布布扣,bubuko.com
linux fork() printf("-") printf("-\n")
原文:http://blog.csdn.net/wangchangshuai0010/article/details/20652639