shell——mkfifo管道

Posted 沄持

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell——mkfifo管道相关的知识,希望对你有一定的参考价值。

转自:http://blog.sina.com.cn/s/blog_605f5b4f0101azuc.html

创建命名管道的方法为:mkfifo pipe_name。

这样就能创建一个命名的管道pipe_name。

运行命令并把输出重定向到管道并扔后台(否则会hang住):cmd > pipe_name &

读取管道内容:cat < pipe_name便可读取管道中的内容。
 
tmp_fifofile="/tmp/$$.fifo"
mkfifo $tmp_fifofile      # 新建一个fifo类型的文件
exec 6<>$tmp_fifofile     
# 将fd6指向fifo类型,如果没有这句,在向文件$tmp_fifofile或者&6写入数据时,程序会被阻塞,直到有read读出了管道中的数据位置,
而执行了上述之后,可以在程序运行期间不断向fifo类型文件写入数据而不会阻塞,并且数据会被保存下来以供read程序读出。
for ((i=0;i<$thread;i++));do bash管道echo bash管道done >&6 # 事实上就是在fd6中放置了$thread个回车符

 

 

以上是关于shell——mkfifo管道的主要内容,如果未能解决你的问题,请参考以下文章

命名管道类似于“mkfifo”创建,但双向

为啥打开 mkfifo 管道时我的程序会挂起?

Linux 命名管道 - MKFIFO 查询

无法使用 C 中的命名管道与 shell 脚本通信

为啥 mkfifo'ed 管道仅在 ~25 秒后更新?

linux命令命名管道(mkfifo)+ 结合xargs命令使用