2017-12-20 13 views
-1

Linux에서 minicom을 사용하여 PDP-11과 통화 중이고 here으로 설명한 바이너리를 다운로드하는 쉘 스크립트를 사용하고 있습니다. 내가 보는 바로는 'pv'에 표시된 진행률 표시 줄은 직렬 라인이 실행되는 9600bps (Linux 직렬 포트가 아닌 USB 직렬 동글)의 실제 직렬 포트보다 다운로드가 거의 즉시 발생한다는 것을 보여줍니다. .minicom으로 이진 다운로드가 잘립니다.

효과가 있지만 다운로드가 커지면 끝이 잘립니다. 스크립트 끝 부분에서 sleep() 시간을 늘리면 다시 작동하도록 할 수 있습니다.

출력이 커널에 버퍼링되고 있고 (pv 프로그램이 아닌 이상한) 스크립트가 너무 빨리 종료되면 버퍼가 플러시됩니다.

셸 스크립트와 pv 대신 내 자신의 작은 C 프로그램을 작성하여 setvbuf()를 사용하여 _IONBF를 설정하여이 문제를 해결할 수 있다고 생각했습니다. 같은 결과.

pv로 또는 내 자신의 프로그램을 작성하여이 버퍼링을 해제 할 수있는 방법에 대한 아이디어가 있습니까? 감사.

답변

0

minicom의 소스를 조사하면 하위 프로그램이 돌아 오면 버퍼를 플러시하므로 프로그램 대기 시간이 필요하다는 것을 알 수 있습니다.

버퍼링을 끄는 방법을 찾지 못했지만 데이터가 끝나기 전에 전송 될 때까지 프로그램이 대기 할 수 있도록 tcdrain() 함수를 찾았습니다.