【问题标题】:Why pause() function prevents seeing console output in C?为什么 pause() 函数会阻止在 C 中看到控制台输出?
【发布时间】:2020-03-28 09:29:17
【问题描述】:

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

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

我希望在暂停之前获得输出“开始”,但程序只是立即暂停。请解释一下原因。提前致谢。

【问题讨论】:

  • 尝试在pause();前添加fflush(stdout);

标签: c linux function pause unistd.h


【解决方案1】:

您的终端仿真器显然不会在每个换行符上刷新标准输出。如果您想立即查看输出,可以使用 fflush(stdout) 手动刷新它:

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

【讨论】:

  • 是的,这解决了问题。我正在使用PuTTy学习,没想到可能存在这个问题。谢谢!
  • 我没想到 PuTTY 会发生这种情况,但我想这取决于你连接到什么。默认情况下,标准 I/O 例程应该使用 line buffered 输出,除非他们可以判断(或认为他们可以判断)输出不会发送到终端。 (有一些 Windows 程序使用管道模拟终端,这是一个问题,因为标准 I/O 例程认为输出将进入管道,因此被欺骗使用 完全缓冲 输出而不是 行缓冲 输出。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 2018-12-01
  • 1970-01-01
  • 2011-11-16
相关资源
最近更新 更多