2010-07-27 3 views
7

명명 된 파이프에 쓰는 스크립트와 파이프에서 읽는 스크립트가 있습니다. 때로는 스크립트를 시작할 때 파이프의 내용이 이전 스크립트 실행에서 있었던 것으로 나타났습니다. 스크립트 시작 부분에 파이프를 비울 수있는 방법이 있습니까?bash를 사용하여 파이프를 플러시하는 방법

답변

5

내가 생각 dd은 당신의 친구입니다.

+0

혼란이되어 있지 bash는 무엇입니까? –

+0

bash-builtin 명령/기능을 사용한다는 의미가 아니라 표준 유닉스 도구를 사용하는 쉘 스크립팅 솔루션이라는 점에서 분명합니다. – mvds

1

파이프가 비어있을 때까지 파이프에서 읽을 수 있습니다. 이렇게하면 효과적으로 플러시됩니다.

이 대담한 묘기를 시도하기 전에 fcntl(mypipe, F_SETFL, O_NONBLOCK) (셸 스크립팅에 해당하는 내용은 알 수 없음)으로 전화를 걸어 파이프가 비었을 때 프로그램을 중단하지 마십시오.

dd if=myfifo iflag=nonblock of=/dev/null 

strace를가

open("myfifo", O_RDONLY|O_NONBLOCK) 

을 표시하고 실제로 심지어 빈 FIFO에 차단하지 않습니다