2013-10-25 3 views
0

stderr에 인쇄하고 코드 내에 putchar()을 사용하는 C 프로그램을 작성하고 있습니다. 콘솔의 출력에 stderr를 모두 표시 한 다음 프로그램이 종료되기 전에 마지막으로 stdout을 플러시합니다. 누구든지 putchar ('\ n')이 발생할 때 플러시에서 stdout을 멈추게 할 메소드를 알고 있습니까?C 플러시에서 stdout을 중지하십시오.

나는 그것이 모든 개줄을 putchar하지 않는지 확인하기 위해 if 문을 수행 할 수 있다고 가정한다. 그러나 fflush를 말할 때까지 프로그램의 맨 위에 놓을 코드 나 줄을 선호한다. 표준 출력) 프로그램

+3

왜 버퍼에 쓰고 그 점을 stdout에 표시할까요? – simonc

+0

어떤 OS를 사용하고 있습니까? – alk

답변

1

의 하단에 pipeling을 사용하여 콘솔에서 명령을 실행

my_command >output.txt 

stderr에 대한 모든 출력 위튼 즉시 나타납니다. stdout에 쓰여진 내용은 output.txt으로 전송됩니다.

2

당신이하려는 것은 끔찍하게 허약합니다. C는 어떤 상황에서도 stdio 을 실행하지 않아도 출력을 플러시하지 않아도됩니다. 비록 당신이 그것을 당신을 위해 일한다고해도,이 행동은 버퍼 크기를 초과하지 않는 것에 달려 있습니다. 이 동작이 실제로 필요한 경우 출력을 직접 버퍼링해야합니다 (stdout이 아닌 tmpfile()에 쓰기). 그러면 프로그램을 종료하기 전에 마지막 단계로 모두 stdout으로 복사하십시오.