Печать на терминал с многоэтапной компиляцией и бесконечным циклом

Хорошо, у меня есть 5 файлов С++:

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

Мой основной метод имеет бесконечный цикл do-while для мониторинга системы и отправки показаний на сервер. Он содержит вызов cout вне (до) цикла для печати на терминал. Моя проблема:

Cout не выводит на терминал, когда я запускаю свою программу. Почему?

Я сделал тестовую программу:

#include <iostream>

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

  while(1)
  {

  }
  return 0;
}

И я обнаружил, что это тоже не работает, оно печатается только в том случае, если я удаляю бесконечный цикл. Функционал моей программы работает нормально, она мониторит и отправляет показания, но не хочет печатать на терминал. У меня также сначала возникло беспокойство, что это может быть связано с многоэтапной компиляцией, но я думаю, что это, вероятно, цикл? Любой совет?

Спасибо!

Кизил


person Cornel Verster    schedule 01.08.2013    source источник


Ответы (1)


Вам нужно очистить буфер iostream:

Пытаться:

#include <iostream>

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

  }
  return 0;
}
person Al Pacifico    schedule 01.08.2013