2010-01-09 2 views
2

LC3 어셈블리 언어에 대한 간단한 코드 편집기를 작성 중이며 작은 문제가 발생했습니다. LC3 어셈블러는 로그 파일에서 다시 읽은 후 내 프로그램에 표시하려고하는 어셈블 링 상태에 대한 기본 정보를 출력합니다.stdout 및 stderr를 리디렉션하고 순서를 유지하는 방법은 무엇입니까?

system("/pathto/lc3as 1> lc3.log 2>&1"); 

그것은 파일에 출력 만의 순서를 유지하지 않습니다

원래 나는 LC3 어셈블러를 호출하고 파일에 표준 출력 및 표준 오류를 리디렉션과 같이하는 시스템()를 사용하려고 시도 어셈블러의 출력.

나는 출력 순서를 유지하지만 내가 원하는 것보다 훨씬 많은 파일 IO를 포함하는 추악한 작업을 생각해 냈다. 모든 상황에서 작동하는지 확실하지 않다. 그 메모에서 주문을 보존하는 프로그램에 출력을 라우팅하기위한 더 나은 솔루션이 있는지 궁금합니다.

+1

어떤 OS입니까? POSIX와 같은, Windows 또는 ..? –

답변

1

출력을 리디렉션하면 출력 스트림이 "모든 쓰기 후 플러시"에서 "버퍼 가득 참 전용으로 플러시"모드로 전환됩니다. stderr 출력은 stdout 출력과 완전히 동기화되지 않습니다. fflush() 번으로 직접 전화해야합니다. CRT에 모드를 변경하는 기능이있을 수 있습니다.

도 아니고으로 수정하십시오. 아무도 진보 잡담을 파일로 리다이렉트하지 않고 단지 표준 출력 만 중요합니다.

+0

흠, 예, 괜찮습니다. 괜찮습니다. 불행히도 stdout 일종의 "잡담"일명 오류에 대한 몇 가지 정보를 제공 일명 오류가 발생하지만, 실제 오류가 충분한 것 같아요. –

관련 문제