睡眠功能表现不同
Sleep function behaving differently
今天是星期六早上,我想做点什么good.And我被一个很小的问题困住了,但不知为何reason.Please解决这个问题会让我的早晨变得愉快。
我在我的程序中使用了 sleep 函数,并在调用 sleep 函数之前使用了 printf 语句,令我惊讶的是程序在调用之前正在休眠 printf.Here 是代码....
#include<unistd.h>
#include<stdio.h>
#include<sys/types.h>
int main(){
pid_t pt;
printf("ging to while loop");
printf("im sleeping");
sleep(1);
printf("im awoke");
}
我的电脑是否预见到我的睡眠功能和之前的睡眠?
我看到的另一件令人惊讶的事情是使用换行符使其在调用第一个 line.That 后正常工作。
请解释一下这种奇怪的行为?
它在 printf 之前休眠 invocation.And 然后在 time.Please 打印所有三个结果做帮助
PS:LINUX(UBUNTU 14.04),GCC 编译器
这是一件简单的事情。 stdout
是行缓冲区。当您给出 \n
时,只会清除或刷新缓冲区,否则不会清除。在程序结束时,它将刷新所有缓冲区。这就是你得到的原因
printf
睡眠后的声明。
所以让你的printf
像这样。
printf("ging to while loop\n");
printf("im sleeping\n");
参考这个link.
今天是星期六早上,我想做点什么good.And我被一个很小的问题困住了,但不知为何reason.Please解决这个问题会让我的早晨变得愉快。
我在我的程序中使用了 sleep 函数,并在调用 sleep 函数之前使用了 printf 语句,令我惊讶的是程序在调用之前正在休眠 printf.Here 是代码....
#include<unistd.h>
#include<stdio.h>
#include<sys/types.h>
int main(){
pid_t pt;
printf("ging to while loop");
printf("im sleeping");
sleep(1);
printf("im awoke");
}
我的电脑是否预见到我的睡眠功能和之前的睡眠?
我看到的另一件令人惊讶的事情是使用换行符使其在调用第一个 line.That 后正常工作。
请解释一下这种奇怪的行为?
它在 printf 之前休眠 invocation.And 然后在 time.Please 打印所有三个结果做帮助 PS:LINUX(UBUNTU 14.04),GCC 编译器
这是一件简单的事情。 stdout
是行缓冲区。当您给出 \n
时,只会清除或刷新缓冲区,否则不会清除。在程序结束时,它将刷新所有缓冲区。这就是你得到的原因
printf
睡眠后的声明。
所以让你的printf
像这样。
printf("ging to while loop\n");
printf("im sleeping\n");
参考这个link.