stdout 데이터를 캐시하고 stdout으로 전달

stdout 데이터를 캐시하고 stdout으로 전달

저는 Linux에서 10밀리초마다 데이터를 내보내는 명령줄 도구를 실행하고 있습니다. 데이터를 시각화하기 위해 다른 애플리케이션으로 전달하겠습니다. 예를 들어 stdin에서 들어오는 메시지 10개를 캐시한 다음 이를 stdout 플러시로 시각적 애플리케이션에 릴리스하려고 합니다. 예를 들어:

10msApp | cache --size 10 | visualizer

파이프라인에서 stdin을 캐시할 수 있는 애플리케이션이 있나요?

답변1

많은 애플리케이션, 표준 라이브러리 및 프레임워크는 이미 파이프에서 읽거나 파이프에 쓸 때 어느 정도 버퍼링되므로 범용 캐시만 필요한 경우 이미 제공되어 있을 것입니다.

그러나 이것이 적합하지 않은 경우 stdbufGNU coreutils가 이를 제공하고(따라서 거의 모든 Linux 상자에 있어야 함) 트릭을 수행할 수 있습니다. 그러나 행 개수보다는 데이터 크기를 기준으로 이 작업을 수행합니다. 예를 들어:

stdbuf -o 1K 10msApp | visualizer

입력도 버퍼링되어 있으면 visualizer실행하고 싶을 수도 있습니다 stdbuf -i.

stdbuf라인 버퍼링도 있지만 -o L내가 아는 한 버퍼의 라인 수를 조정할 수는 없습니다.

관련 정보