여러 프로세스를 사용하여 FIFO에 쓰기

여러 프로세스를 사용하여 FIFO에 쓰기

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

semGNU 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

관련 정보