![원형 bash 파이프 (./progA | ./progB | ./progA) [중복]](https://linux55.com/image/194422/%EC%9B%90%ED%98%95%20bash%20%ED%8C%8C%EC%9D%B4%ED%94%84%20(.%2FprogA%20%7C%20.%2FprogB%20%7C%20.%2FprogA)%20%5B%EC%A4%91%EB%B3%B5%5D.png)
두 개의 바이너리가 있는데 그 중 하나( questions.bin
)는 "1+3이 무엇인가요?"와 같은 질문을 던집니다. STDOUT으로 전송하고 STDIN에서 답변을 얻습니다. 다른 하나는 answers.bin
위 형식의 STDIN 질문을 수락하고 이를 STDOUT에 인쇄합니다.
나는 그들의 출력을 서로에게 파이프할 수 있기를 원합니다.
./questions.bin | ./answers.bin | ./questions.bin
파이프로 할 수 있는 방법이 있나요? 그렇지 않다면 달리 무엇을 하시겠습니까?
답변1
답변2
/dev/fd/x
Linux에서는 명명된 파이프처럼 동작하는 파이프를 참조하는 fd x 속성을 사용할 수 있습니다 .
: | (./questions.bin | ./answers.bin) > /dev/fd/0
쉘에는 시스템 호출을 통한 yash
기본 인터페이스가 있습니다.pipe()
파이프 리디렉션특징:
(./questions.bin | ./answers.bin) >>|0
이는 명명된 파이프를 생성할 필요(및 독점 생성 보장, 이에 대한 액세스 제한, 이후 또는 신호 정리와 관련된 문제)를 방지합니다.