2010-03-15 3 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); 
관련 문제