我需要用 mkfifo 创建一个命名管道。例如:
mkfifo mypipe
Run Code Online (Sandbox Code Playgroud)
我将有一个从管道读取的 systemd 服务(一个简单的 shell 脚本),并且我将在同一管道上编写调用另一个脚本(例如write-to-pipe.sh)。
write-to-pipe.sh如果我在管道上同时有多个写入实例怎么办?我的意思是,许多用户可以执行write-to-pipe.sh. 如果两个用户尝试同时在管道上写入,是否会造成麻烦(就像两个用户尝试在常规文件(而不是管道)上写入并且其中一个用户覆盖另一个用户时)?
我希望这不是重复的,但我找不到这个问题的答案......
谢谢
这是我运行的快速测试:
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)