linux管道命令是什么,Linux管道詳解

 2023-12-06 阅读 37 评论 0

摘要:文章目錄一、概念二、匿名管道三、命名管道`3.1.特征``3.2.示例` 參考書籍:《Linux Shell核心編程指南》——丁明一 一、概念 管道是進程間通信的一種方式。 分為匿名管道和命名管道 二、匿名管道 這個最常用,使用|符號就可以創建一個匿名管道

文章目錄

  • 一、概念
  • 二、匿名管道
  • 三、命名管道
    • `3.1.特征`
    • `3.2.示例`


參考書籍:《Linux Shell核心編程指南》——丁明一

一、概念

管道是進程間通信的一種方式。

分為匿名管道和命名管道

二、匿名管道

這個最常用,使用|符號就可以創建一個匿名管道。
例如:

cat /etc/hosts | grep 127.0.0.1

匿名管道僅可以實現父進程與子進程之間的數據交換,要想實現任意兩個無關的進程之間的通信,需要使用命名管道。

三、命名管道

命名管道也叫FIFO文件,即First In First Out,先進先出,先寫入的數據被先讀出來,后寫入的數據被后讀出來。

3.1.特征

  • FIFO文件由命令創建(mknod或mkfifo),可以在文件系統中直接看到
  • 寫入管道的數據一旦被讀取后,就不可以再重復讀取
  • 進程往命名管道中寫數據時,如果沒有其他進程讀取數據,則寫進程會被阻塞
  • 進程嘗試從命名管道中讀取數據時,如果管道中沒有數據,則讀進程會被阻塞
  • 命名管道中的數據常駐內存,并不實際寫入磁盤,讀寫效率會更高

3.2.示例

mkfifo pipe_file1			#創建命名管道
mkfifo -m 600 pipe_file2	#創建命名管道,并設置權限

命名管道文件屬性的第一列為p
在這里插入圖片描述

echo "hello" > pipe_file1		#寫阻塞

在這里插入圖片描述
再開一個終端窗口,執行該操作,第一個終端窗口的寫阻塞會自動解除

cat pipe_file1

在這里插入圖片描述
上面的情況反之亦然。總之就是:有寫必有讀,有讀必有寫

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/189666.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息