睡眠功能表现不同

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.