읽을 때 자동으로 지워지는 버퍼에 표준 출력을 캡처하는 방법이 있습니까?

읽을 때 자동으로 지워지는 버퍼에 표준 출력을 캡처하는 방법이 있습니까?

프로세스의 표준 출력을 버퍼에 저장하고 FIFO 스타일로 읽은 후 버퍼를 지우고 싶습니다.

나는 stdout을 파이프할 수 있다는 것을 알고 있지만 파이프/파일은 계속 커지고 내가 이미 읽은 데이터를 포함하게 됩니다. 나는 단지 새로운 데이터를 원할 뿐이다.

command > named_pipe &

데이터를 리디렉션할 다른 내장 방법(네트워크 소켓의 버퍼와 유사)이 있습니까?

답변1

명명된 파이프가 문제를 해결하지 못하는 이유를 이해할 수 없습니다. 이 예에서는 두 개의 쉘 인터페이스를 사용하며 shell_1어떤 쉘이 어떤 I shell_2/ O를 사용하는지 구별하기 위해 shell_2.shell_1

$ mkfifo my_pipe
(shell_1) $ echo hi > my_pipe # Blocks waiting for a reader
    (shell_2) $ cat my_pipe # Unblocks shell_1
    hi
    (shell_2) $ cat my_pipe # blocks -- does not print "hi" again
(shell_1) $ echo bye > my_pipe # Unblocks shell_2
    bye # Printed by shell_2

관련 정보