C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[38572] dos용 프로그램의 out message(printf)를 실시간으로 받아오는 방법??
조건일 [imgunill] 946 읽음    2004-12-30 13:13
도스용 프로그램을 개발 업체로 부터 받아서 이 프로그램을 Window사용자가 편리하도록 warp 하기위해 UI를 구성하고
Pipe를 이용하여 output을 받아 리스트 박스에 그 실행결과 메시지를 뿌리도록 하였습니다..
이런 방식으로 기존 도스 명령어들 dir 등등을 윈도우용 화면을 구성하여 사용할수 있도록 하려고 하는 것이 목적입니다. (일반적인 Windows API에 의한 구현 말구요..)

그런데.. 문제가 발생하였습니다.
기존 Dos프로그램이 내밷는 메시지가 약한 1분 정도 1초 간격으로 진행상태 메시지가 출력됩니다.. printf("Now progressed %d%%\r\n", xxx) => "Now progressed 2%" 정도로 출력되는것 같습니다.  실시간으로 1초에 한번씩 그내용을 Pipe로 부터 가져와 뿌려줘야 하는데 이느므 Pipe output이 몰려다니는 겁니다. 예를 들어 1초에서 15초 사이의 데이터가 한꺼번에 16초 정도에 뭉쳐서 Pipe에서 가져와 지더라 이겁니다. 그결과 정상적인 진행이 아니라 딸꾹질 같이 언제 발생할지 모르는 진행상태 표시가 되버렸습니다.
흠.. 제 생각엔 파이의 메모리 flush타이밍 또는 flush이벤트가 발생되는 조건이 버퍼에서 일정사이즈 만큼 차있을 경우 수행되는것 같습니다..
다른 방법또는 이런한 현상을 좀더 실시간 적으로 변경할수 있는 방법에 대하여 알고계시는 분 있으신지요..? 제발 알고 계신분은 힌트라도 알려 주셨으면 감사하겠습니다.

+ -

관련 글 리스트
38572 dos용 프로그램의 out message(printf)를 실시간으로 받아오는 방법?? 조건일 946 2004/12/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.