MPI C fprintf () не отображается, если процесс зависает в MPI_Recv - PullRequest
0 голосов
/ 15 марта 2010

Я пишу программу MPI C. У меня проблемы с отладкой, потому что всякий раз, когда я использую fprintf, вот так: fprintf (stdout, "worker:% d", worker); если программа зависает из-за некоторой блокировки MPI_Recv, я не вижу никакого вывода. Я уверен, что строка кода достигнута, потому что я могу поместить оператор return после оператора fprintf, и в этом случае процесс завершает выполнение и выводится результат. Любые идеи о том, как печатать (см. Вывод), даже если этот процесс позже заблокирован Recv? Я надеюсь, что это имеет смысл.

1 Ответ

1 голос
/ 15 марта 2010

По умолчанию stdout является буферизованной строкой, поэтому вы можете завершить отладочные вызовы печати с помощью новых строк:

fprintf(stdout, "workder: %d\n", worker);

Если вы не хотите новой строки, вы можете очистить поток самостоятельно:

fprintf(stdout, "workder: %d", worker);
fflush(stdout);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...