2013-10-08 4 views
0

내가 윈도우 폰 런타임에 로그 파일에 stderr을 리디렉션하고 충돌을 일으 킵니다. 리디렉션하지 않으면 stderr 모든 것이 잘 작동하는 것 같습니다.FFLUSH 프로그램이

+0

'stdError'변수의 용도는 무엇입니까? FD를 여기에서 새고있는 것 같습니다. – EJP

답변

1

누가 알겠습니까?

std::cerr.flush(); 시도해보십시오. 왜냐하면 저는 자신의 일을 다시하는 창을 볼 수 있기 때문입니다. (마치 소켓처럼 파일이 아니기 때문에 자신의 IO 작업을 좋아합니다.)

사용하여 내가 방금 위에서 말했다 것은 오히려 파일 등의 가정보다, 자신의 표준 라이브러리에 작업을 저장합니다. "추상화"를 기억하십시오. 플러시는 방법이며, 동사입니다. 우리는 어떻게 (또는이 경우에는 (알고 싶지 않음)) 신경 쓰지 않습니다. 그래서 플러시가해야 할 일을 플러시한다고 가정합시다. ! 이 작동하지 않습니다와 나는 생각을 가진다 경우

는 코멘트를 남겨주세요.

나는 윈도우 나 윈도우 폰을 사용하지 않는다. (나는 세상에서 행운 24 : P가 아니다)하지만 나는 다행스럽게도 윈도우에 I/O 문제 ("차이")가 있음을 알고있다. 는 MinGW와 공동 나로부터 숨길 :)

또는

난 정말 편 단계를하는 문제 (이 코드가 아니기 때문에) 원한다면, 당신의 전술을 변경하는 새로운 클래스라는 my_error_stream를 만들

또는 std :: ostream을 확장합니다 (std :: oststream과 같은 std :: cerr처럼 사용할 수 있습니다).

정적 메서드를 get_error_stream() 또는 my_error_stream에서 파생 된 두 클래스 중 하나를 반환하는 정적 메서드를 넣습니다. 하나는 std :: err로 전달하고 다른 하나는 파일로 전달합니다. 이 구현이 분리 유지하고, 클래스 계층의 자신의 "지점"에 있기 때문에 그것은 당신이보고 느낄 수있는 코드를 같은 방법에 따라 달라집니다

, 나는 이런 식으로 말했다.

정말 귀하의 질문에 대답하지 않지만, 코드가 잘 보인다 및 Windows 파이프와 소켓에 안됐다.