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에 무엇을 해야할지 모르겠습니다.