bash가 파이프를 통해 데이터를 보내는 방법을 아는 사람 있습니까?Bash 파이프 처리
이 명령은 file.txt의 모든 내용을 버퍼에 인쇄하고 꼬리로 읽습니까? 또는이 명령은 file.txt의 내용을 줄 단위로 인쇄 한 다음 각 줄에서 일시 중지하여 처리하고 더 많은 데이터를 요구합니까?
내가 묻는 이유는 기본적으로 한 작업의 출력이 다음 작업의 입력으로 보내지는 데이터 청크에서 일련의 작업을 수행하는 임베디드 장치에 프로그램을 작성하고 있기 때문입니다. 나는 리눅스 (bash)가 이것을 어떻게 처리하는지 알고 싶다. 그래서 나는 "cat file.txt | tail -20"을 실행할 때 어떤 일이 발생하지 않았는지에 대한 일반적인 대답을 알려주고 싶다.
미리 답변 해 주셔서 감사합니다.
EDIT : Shog9는 관련 위키피디아 기사를 지적했으나 기사에 직접 연결되지는 않았지만 내가 찾던 정보를 찾는데 도움이되었습니다. http://en.wikipedia.org/wiki/Pipeline_%28Unix%29#Implementation에는 내가 원하는 정보가있었습니다.
자신을 분명히하지 못해 죄송합니다. 물론 파이프를 사용하고 있으며 명령의 각 부분에 대해 stdin과 stdout을 사용하고 있습니다. 나는 그것이 너무 명백한 상태라고 생각했다.
나는 이것이 어떻게 처리되고 구현되는지를 묻고있다. 두 프로그램은 동시에 실행할 수 없으므로 데이터는 표준 입력에서 표준 출력으로 어떻게 전송됩니까? 첫 번째 프로그램이 두 번째 프로그램보다 훨씬 빠른 데이터를 생성하면 어떻게됩니까? 시스템이 종료되거나 stdout 버퍼가 꽉 찼을 때까지 첫 번째 명령을 실행합니까? 다음 프로그램으로 넘어갑니다. 처리 할 데이터가 더 이상 남아 있지 않거나 더 복잡한 메커니즘이있을 때까지 반복합니다. ?