使用多级编译和无限循环打印到终端

时间:2013-08-01 14:17:18

标签: c++ loops terminal cout infinite

好的,我有5个c ++文件:

PegRTU.cpp,PegIOHandler.cpp,PegIOHandler.h,pegio.c,pegio.h (PegRTU.cpp包含我的main()方法)。

我使用gcc和g ++编译以下命令:

gcc -c pegio.c -o pegio.o
g++ -c PegIOHandler.cpp -o PegIOHandler.o -std=c++0x
g++ -c PegRTU.cpp -o PegRTU.o -std=c++0x
g++ -o pegrtu *.o -lopendnp3

我的main方法有一个无限的do-while循环,用于监视系统并将读数发送到服务器。它包含在循环之外(之前)打印到终端的cout调用。我的问题是:

当我运行程序时,Cout不会打印到终端。为什么呢?

我做了一个测试程序:

#include <iostream>

int main()
{
  std::cout << "TEST";

  while(1)
  {

  }
  return 0;
}

我发现这也不起作用,只有在我删除无限循环时才打印。我的程序功能正常,它监视和发送读数,但它不想打印到终端。我也首先担心它可能与多级编译有关,但我认为它可能是循环?有什么建议吗?

谢谢!

山茱萸

1 个答案:

答案 0 :(得分:1)

您需要刷新iostream缓冲区:

尝试:

#include <iostream>

int main()
{
  std::cout << "TEST";
  std::cout.flush(); // Added this
  while(1)
  {

  }
  return 0;
}