Почему C застревает на полпути через цикл while? - PullRequest
9 голосов
/ 26 февраля 2011

Когда я компилирую и запускаю этот код (это часть гораздо более крупной программы), Linux проходит половину цикла while, а затем просто перестает работать.

Приведенный ниже код печатает time: 0, а затемзависает, больше ничего не делая, пока я не приостановлю процесс.С какой стати это напечатало бы time: 0, а не следующую строку проверки работоспособности?

while (i < 5)
{
    printf("time: %d\n",elapsedTime);
    printf("sanity check");
    foo();
    i++;
}

1 Ответ

22 голосов
/ 26 февраля 2011

Вывод обычно буферизуется и записывается только после сброса или перевода строки.В

printf("sanity check");

нет новой строки, поэтому, если после этого вы запустите бесконечный цикл, вы его не увидите.Замените его на

printf("sanity check\n");

или

printf("sanity check");
fflush(stdout);

, и вы увидите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...