![읽을 때 자동으로 지워지는 버퍼에 표준 출력을 캡처하는 방법이 있습니까?](https://linux55.com/image/127611/%EC%9D%BD%EC%9D%84%20%EB%95%8C%20%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C%20%EC%A7%80%EC%9B%8C%EC%A7%80%EB%8A%94%20%EB%B2%84%ED%8D%BC%EC%97%90%20%ED%91%9C%EC%A4%80%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EC%BA%A1%EC%B2%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
프로세스의 표준 출력을 버퍼에 저장하고 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