비차단 cat(stdin에서 가능한 많은 데이터를 읽고 쓰기 차단 stdout을 사용할 수 있을 때까지 RAM에 보관함)

비차단 cat(stdin에서 가능한 많은 데이터를 읽고 쓰기 차단 stdout을 사용할 수 있을 때까지 RAM에 보관함)

aplay표준 입력을 받아들이는 속도가 상당히 느린 프로그램이 있습니다 . 표준 입력(예: 파이프를 통해)에 쓰는 프로그램은 쓰는 동안 많은 것을 차단하는 경향이 있습니다. 입력을 기다려야 하는 것은 허용되지 않습니다(오디오 중단이 발생하므로). 표준 입력(예: 파이프를 통한)은 작성하는 동안 많은 것을 차단하는 경향이 있습니다. 입력을 제공하는 프로그램은 매우 빠르게 작업을 수행할 수 있지만 가끔씩 끊김 현상이 발생하고 입력 생성이 중단됩니다. 입력을 기다려야 하는 것은 허용되지 않습니다(오디오 중단이 발생하므로).

stdin에서 많은 데이터를 읽고 stdout 쓰기가 완료될 때까지 RAM에 보관할 수 있는 프로그램이 있습니까?

C에서만 5분 안에 멈춰 있고 5분 동안 멈추지 않은 Python 프로그램과 같습니다.

import threading
import sys
import queue

stdin=sys.stdin.detach().detach() # detach TextIOWrapper, then detach BufferedWriter for a raw input stream.
stdout=sys.stdout.detach()

q=queue.Queue()

def worker(q,stdout):
    while True:
        data=q.get()
        if data is None:
            return
        stdout.write(data)

threading.Thread(target=worker, args=(q,stdout)).start()


data=stdin.read(8192)
while data:
    q.put(data)
    data=stdin.read(8192)
q.put(None)

어쩌면 데이터가 사라질 때까지 기다리는 대신 RAM에 구성 가능한 양의 데이터를 저장하는 것과 같은 기능이 있을까요? 입력 읽기를 일시 중지하고 SIGUSR1 및 SIGUSR2가 전송되면 다시 시작할 수 있습니까?

이런 게 꼭 존재하는 거겠죠? Google에 무엇을 해야할지 모르겠습니다.

관련 정보