2010-05-05 6 views
3

두 개의 파이프에 동일한 정보를 쓰고 싶지만 첫 번째 파이프가 읽힐 때까지 기다리지 않으려 고합니다. 여기 cat two이 실행될 때까지 Tee a Pipe 비동기 적으로

 
mkfifo one 
mkfifo two 
echo hi | tee one two & 
cat one & 
cat two & 

cat one

읽기 시작되지 않는 예입니다. 기다리지 않고 cat one을 실행할 수있는 방법이 있습니까?

답변

1

문제 :을 읽기 위해 열 때까지의 FIFO가 차단합니다. 따라서 그들에 FD를 열어 두십시오 :

mkfifo one two 
echo hi | tee one two & 
exec 3<one 
exec 4<two 
cat <&3 
cat <&4 
+0

tee에 대한 입력이 파이프 버퍼보다 ​​큰 경우에는 작동하지 않습니다. 재현 : 두 번째 줄을'dd if = <(yes) count = 1000 | tee one two>/dev/null &'스크립트가 블로킹합니다. – hbogert

0
echo hi | tee one | tee two & 
+0

흥미 롭습니다. 나는 실제로 고양이 1과 고양이 2가 독립적 이길 바랬다. – User1

관련 문제