使用多个进程写入 FIFO

mug*_*zzo 5 linux fifo

我需要用 mkfifo 创建一个命名管道。例如:

mkfifo mypipe
Run Code Online (Sandbox Code Playgroud)

我将有一个从管道读取的 systemd 服务(一个简单的 shell 脚本),并且我将在同一管道上编写调用另一个脚本(例如write-to-pipe.sh)。

write-to-pipe.sh如果我在管道上同时有多个写入实例怎么办?我的意思是,许多用户可以执行write-to-pipe.sh. 如果两个用户尝试同时在管道上写入,是否会造成麻烦(就像两个用户尝试在常规文件(而不是管道)上写入并且其中一个用户覆盖另一个用户时)?

我希望这不是重复的,但我找不到这个问题的答案......

谢谢

mur*_*uru 4

这是我运行的快速测试:

mkfifo foo
yes "Process 1 reporting" > foo & yes "This is process 2" > foo &
awk '!a[$0]++' < foo
Run Code Online (Sandbox Code Playgroud)

我从 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
Run Code Online (Sandbox Code Playgroud)