명명 된 파이프에 쓰는 스크립트와 파이프에서 읽는 스크립트가 있습니다. 때로는 스크립트를 시작할 때 파이프의 내용이 이전 스크립트 실행에서 있었던 것으로 나타났습니다. 스크립트 시작 부분에 파이프를 비울 수있는 방법이 있습니까?bash를 사용하여 파이프를 플러시하는 방법
7
A
답변
5
내가 생각 dd
은 당신의 친구입니다.
1
파이프가 비어있을 때까지 파이프에서 읽을 수 있습니다. 이렇게하면 효과적으로 플러시됩니다.
이 대담한 묘기를 시도하기 전에 fcntl(mypipe, F_SETFL, O_NONBLOCK)
(셸 스크립팅에 해당하는 내용은 알 수 없음)으로 전화를 걸어 파이프가 비었을 때 프로그램을 중단하지 마십시오.
dd if=myfifo iflag=nonblock of=/dev/null
strace를가
open("myfifo", O_RDONLY|O_NONBLOCK)
을 표시하고 실제로 심지어 빈 FIFO에 차단하지 않습니다
1
이 시도 :
이는 "열기가 FD가/읽기 전용보다는 쓰기 읽기 파이프 라인을 차단 방지 설정할 때." 에서
: 그것은
Setting up pipelines reading from named pipes without blocking in bash
혼란이되어 있지 bash는 무엇입니까? –
bash-builtin 명령/기능을 사용한다는 의미가 아니라 표준 유닉스 도구를 사용하는 쉘 스크립팅 솔루션이라는 점에서 분명합니다. – mvds