2010-03-15 31 views
0

我正在写一个MPI C程序。我有调试它的麻烦,因为每当我使用fprintf,就像这样:fprintf(stdout,“worker:%d”,worker);如果程序挂起,由于某些阻塞MPI_Recv,我看不到任何输出。我确定已经达到了这行代码,因为我可以在fprintf语句之后放置一个return语句,在这种情况下,该进程完成执行并输出结果。有关如何打印(请参阅输出)的任何想法,即使Recv过程稍后会被阻止? 我希望这是有道理的。MPI C fprintf()输出没有显示,如果进程挂起MPI_Recv

回答

1

默认情况下,stdout是行缓冲,所以你可能要结束调试打印要求用换行:

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

如果你不想换行,你可以自己冲洗流:

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