for (;;)
{
printf("worker进程休息1秒");
sleep(1);
}
printf() 函数末尾不加 \n 就无法及时地将信息显示到屏幕上,这是因为行缓存(Windows上一般没有,类Unix上才有)。
行缓存:需要输出的数据不直接显示到终端,而是首先缓存到某个地方,当遇到行刷新标志或者该缓存已满的情况下,才会把缓存的数据显示到终端设备。
解决方法一:
ANSI C 中定义 \n 是行刷新标志,printf() 函数没有带 \n 是不会自动刷新输出流的,直至行缓存被填满才显示到屏幕上,所以用 printf() 的时候,注意末尾要用 \n。
for (;;)
{
printf("worker进程休息1秒\n");
sleep(1);
}
解决方法二:
for (;;)
{
printf("worker进程休息1秒");
fflush(stdout); // 刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上,则printf()里的东西会立即输出
sleep(1);
}
解决方法三:
setvbuf(stdout, NULL, _IONBF, 0); // 这个函数直接将printf()缓冲区禁止,printf就直接输出了
for (;;)
{
printf("worker进程休息1秒");
sleep(1);
}