mkfifo를 사용하여 명명된 파이프를 만들어야 합니다. 예를 들어:
mkfifo mypipe
파이프에서 읽는 시스템 서비스(간단한 쉘 스크립트)를 만들고 write-to-pipe.sh
동일한 파이프를 호출하는 다른 스크립트(예: )를 작성하겠습니다.
write-to-pipe.sh
파이프에 동시에 여러 쓰기 인스턴스가 있으면 어떻게 되나요? 내 말은, 많은 사용자가 그것을 할 수 있다는 것입니다 write-to-pipe.sh
. 두 명의 사용자가 동시에 파이프에 쓰려고 하면 문제가 발생합니까(예: 두 명의 사용자가 일반 파일(파이프가 아님)에 쓰려고 하고 그 중 한 명이 다른 파일을 덮어쓰는 경우) 사용자)?
중복이 아니길 바라지만 이 질문에 대한 답을 찾을 수 없습니다...
감사해요
답변1
제가 실행한 간단한 테스트는 다음과 같습니다.
mkfifo foo
yes "Process 1 reporting" > foo & yes "This is process 2" > foo &
awk '!a[$0]++' < foo
awk에서 얻은 출력은 다음과 같습니다.
Process 1 reporting
Process 1 reportThis is process 2
This is process 2
This is pring
Process 1 reportocess 2
ing
ocess 2
This is prProcess 1 reporting
답변2
sem
GNU Parallel에서 다음과 같은 것을 사용하십시오:
mkfifo myfifo
sem --id myid 'seq 1 10; sleep 1; echo done' > myfifo &
sem --id myid 'seq 2 10; sleep 1; echo done' > myfifo &
sem --id myid 'seq 3 10; sleep 1; echo done' > myfifo &
sem --id myid 'seq 4 10; sleep 1; echo done' > myfifo &
cat myfifo