为什么pause()函数阻止在C中看到控制台输出?

为什么pause()函数阻止在C中看到控制台输出?,c,linux,function,pause,unistd.h,C,Linux,Function,Pause,Unistd.h,我有点困惑pause函数在调用顺序的意义上是如何工作的。例如: int main(){ printf("Start\n"); pause(); printf("Finish\n"); } 我本来希望在暂停之前启动输出,但程序只是立即暂停。请解释一下原因。提前感谢。您的终端仿真器显然不会在每条换行线上刷新标准输出。如果要立即查看输出,可以手动刷新: int main(){ printf("Start\n"); fflush(stdout);

我有点困惑pause函数在调用顺序的意义上是如何工作的。例如:

int main(){
     printf("Start\n");
     pause();
     printf("Finish\n");
}

我本来希望在暂停之前启动输出,但程序只是立即暂停。请解释一下原因。提前感谢。

您的终端仿真器显然不会在每条换行线上刷新标准输出。如果要立即查看输出,可以手动刷新:

int main(){
     printf("Start\n");
     fflush(stdout);
     pause();
     printf("Finish\n");
}

尝试添加fflushstdout;在暂停之前;。是的,这解决了问题。我用油灰来学习,没想到会有这个问题。非常感谢。我没想到这会发生在油灰上,但我想这取决于你连接到什么。默认情况下,标准I/O例程应该使用行缓冲输出,除非它们能够告诉或认为它们能够告诉输出不会发送到终端。有一些Windows程序使用管道模拟终端,这是一个问题,因为标准I/O例程认为输出将进入管道,因此被愚弄为使用完全缓冲输出而不是行缓冲输出。