管道,是指用管子、管子連接件和閥門等連接成的用于輸送氣體、液體或帶固體顆粒的流體裝置。通常,流體經鼓風機、壓縮機、泵和鍋爐等增壓后,從管道的高壓處流向低壓處,也可利用流體自身的壓力或重力輸送。常見管道,主要有油氣管道、排水管管道、熱力管道、消防管道、抽砂管道。
管道是由管道組成件和管道支承件所組成的管路系統。管道組成件,用于連接或裝配管道的元件,包括管子、管件、法蘭、墊片、緊固件、閥門以及膨脹接頭、撓性接頭、耐壓軟管、蒸汽疏水閥、過濾器和分離器等。管道支承件,管道安裝件和附著件的總稱,其中安裝件是將負荷從管子或管道附著件傳遞到支承結或設備上的元件,如吊桿、彈簧支吊架、斜拉桿、氣彈簧、支管臺、墊板、托座和滑動支架等;附著件是用焊接、螺栓連接或夾緊等方法附裝在管子上的零件,如管吊、吊(支)耳、吊夾、緊固直發器和裙式管座等。
管道簡介
管道
英文原義:PipingSymbol
中文釋義:鍵盤字符|(典型101鍵鍵盤的Enter鍵上面反斜杠的上檔字符)
注解:經常用來將某個命令或程序的輸出提供給另一個命令或程序。例如,history|grepmcopy(用history命令)將.bash_history文件的內容發送到grep程序,以搜索字符串“mcopy”。
Linux進程間通信的幾種主要手段。其中管道和有名管道是最早的進程間通信機制之一,管道可用于具有親緣關系進程間的通信,有名管道克服了管道沒有名字的限制,因此,除具有管道所具有的功能外,它還允許無親緣關系進程間的通信。認清管道和有名管道的讀寫規則是在程序中應用它們的關鍵。
管道分類
1、按材料分類:金屬管道和非金屬管道。
2、按設計壓力分類:真空管道、低壓管道、高壓管道、超高壓管道。
3、按輸送溫度分類:低溫管道、常溫管道、中溫和高溫管道。
4、按輸送介質分類:排水管管道、壓縮空氣管道、氫氣管道、氧氣管道、乙炔管道、熱力管道、燃氣管道、燃油管道、劇毒流體管道、有毒流體管道、酸堿管道、鍋爐管道、制冷管道、凈化純氣管道、純水管道。
考慮因素
管道-管徑的確定當流體的流量已知時,管徑的大小取決于允許的流速或允許的摩擦阻力(壓力降)。流速大時管徑小,但壓力降值增大。因此,流速大時可以節省管道基建投資,但泵和壓縮機等動力設備的運行能耗費用增大。此外,如果流速過大,還有可能帶來一些其他不利的因素。因此管徑應根據建設投資、運行費用和其他技術因素綜合考慮決定。
管道-管道的聯接管子、管子聯接件、閥門和設備上的進出接管間的聯接方法,由流體的性質、壓力和溫度以及管子的材質、尺寸和安裝場所等因素決定,主要有螺紋聯接、法蘭聯接、承插聯接和焊接等4種方法:①螺紋聯接:主要適用于小直徑管道。聯接時,一般要在螺紋聯接部分纏上塑料密封帶或涂上厚漆、繞上麻絲等密封材料,以防止泄漏。在1.6兆帕以上壓力時,一般在管子端面加墊片密封。這種聯接方法簡單,可以拆卸重裝,但須在管道的適當地方安裝活接插件,以便于拆裝。②法蘭聯接:適用的直徑范圍較大。聯接時根據流體的性質、壓力和溫度選用不同的法蘭和密封墊片,利用螺栓夾緊墊片保持密封。在需要經常拆裝的管段處和管道與設備相聯接的地方大都采用法蘭聯接。③承插聯接:用于鑄鐵管、混凝土管、陶土管及其聯接件之間的聯接,只適用于在低壓常溫條件下工作的給水、排水和煤氣管道。聯接時,一般在承插口的槽內先填入麻絲、棉線或石棉繩,然后再用石棉水泥或鉛等材料填實,還可在承插口內填入橡膠密封環,使其具有較好的柔性,容許管子有少量的移動。④焊接聯接:這種聯接的強度和密封性最好,適用于各種管道,省工省料,但拆卸時必須切斷管子和管子聯接件。
管道-管道的敷設城市里的給水、排水、供熱、供煤氣的管道的干線和長距離的輸油輸氣管道大多敷設在地下,而工廠里的工藝管道為便于操作和維修多敷設在地上。管道的通行、支承、坡度與排液排氣、補償、保溫與加熱、防腐與清洗、識別與涂漆和安全等,無論對于地上敷設還是地下敷設都是重要的問題。
通行問題
地面上的管道應盡量避免與道路、鐵路和航道交叉。在不能避免交叉時,交叉處跨越的高度也應能使行人和槳輪船安全通過。地下的管道一般沿道路敷設,各種管道之間保持適當的距離,以便安裝和維修;供熱管道的表面有保溫層,敷設在地溝或保護管內,應避免被土壓壞和使管子能膨脹移動。
支承問題
管道可能承受許多種外力的作用,包括本身的重量(管子、閥門、管子聯接件、保溫層和管內流體的重量)、流體的壓力作用在管端的推力、風雪載荷、土壤壓力、熱脹冷縮引起的熱應力、振動載荷和地震災害等。為了保證管道的強度和剛度,必須設置各種支(吊)架,如活動支架、固定支架、導向支架和彈簧支架等。支架的設置根據管道的直徑、材質、管子壁厚和載荷等條件決定。固定支架用來分段控制管道的熱伸長,使膨脹節均勻工作。導向支架使管子僅作軸向移動。
坡度和排液排氣
為了排除凝結水,蒸汽和其他含水的氣體管道應有一定的坡度,一般不小于千分之二。對于利用重力流動的地下排水管道,坡度不小于千分之五。蒸汽或其他含水的氣體管道在最低點設置排水管或蒸汽疏水閥,某些氣體管道還設有氣水分離器,以便及時排去水液,防止管內產生水擊和阻礙氣體流動。給水或其他液體管道在最高點設有排氣裝置,排除積存在管道內的空氣或其他氣體,以防止氣阻造成運行失常。
補償問題
管道如不能自由地伸縮,就會產生巨大的附加應力。因此,在溫度變化較大的管道和需要有自由位移的常溫管道上,需要設置膨脹節,使管道的伸縮得到補償而消除附加應力的影響。
保溫和加熱
對于蒸汽管道、高溫管道、低溫管道以及有防燙、防凍要求的管道,需要用保溫材料包覆在管道外面,防止管內熱(冷)量的損失或產生凍結。對于某些高凝固點的液體管道,為防止液體太粘或凝固而影響輸送,還需要加熱和保溫。常用的保溫材料有水泥珍珠巖、玻璃棉、巖棉和石棉硅藻土等。
防腐和清洗
為防止土壤的侵蝕,地下金屬管道表面應涂防銹漆或焦油、瀝青等防腐涂料,或用浸漬瀝青的玻璃布和麻布等包覆。埋在腐蝕性較強的低電阻土壤中的管道須設置陰極保護裝置,防止腐蝕。地面上的鋼鐵管道為防止大氣腐蝕,在表面上涂覆以各種防銹漆。各種管道在使用前都應清洗干凈,某些管道還應定期清洗內部。為了清洗方便,在管道上設置有過濾器或吹洗清掃孔。在長距離輸送石油和天然氣的管道上,須用清掃器定期清除管內積存的污物,為此要設置專用的發送和接收清掃器的裝置。
識別涂漆
當管道種類較多時,為了便于操作和維修,在管道表面上涂以規定顏色的油漆,以資識別。例如,蒸汽管道用紅色,壓縮空氣管道用淺藍色等。
安全問題
為了保證管道安全運行和發生事故時及時制止事故擴大,除在管道上裝設檢測控制儀表和安全閥外,對某些重要管道還采取特殊安全措施,如在煤氣管道和長距離輸送石油和天然氣的管道上裝設事故泄壓閥或緊急截斷閥。它們在發生災害性事故時能自動及時地停止輸送,以減少災害損失。
相關連接
化工、石油、天然氣
管道(二):Linux操作系統中的概念
相關介紹
管道關鍵概念
管道是Linux支持的最初UnixIPC形式之一,具有以下特點:管道是半雙工的,數據只能向一個方向流動;需要雙方通信時,需要建立起兩個管道;只能用于父子進程或者兄弟進程之間(具有親緣關系的進程);單獨構成一種獨立的文件系統:管道對于管道兩端的進程而言,就是一個文件,但它不是普通的文件,它不屬于某種文件系統,而是自立門戶,單獨構成一種文件系統,并且只存在與內存中。數據的讀出和寫入:一個進程向管道中寫的內容被管道另一端的進程讀出。寫入的內容每次都添加在管道緩沖區的末尾,并且每次都是從緩沖區的頭部讀出數據。
1 管道的實現機制
管道就是指用于連接一個讀進程和一個寫進程,以實現它們之間通信的共享文件,又稱pipe文件。Linux中實現了兩種管道,一種是無名管道,一種是命名管道。無名管道沒有磁盤節點,它僅作為一個內存對象存在,用完后就銷毀了。因為沒有文件名和路徑,也沒有磁盤節點,因此無名管道沒有顯式的打開過程,實際上它是在創建時就自動打開的,并且生成內存inode節點、d目錄項對象和兩個文件結構對象(一個讀操作、一個寫操作),其內存對象和普通文件的一致,所以讀寫操作使用的是同樣的文件接口,當然讀寫函數是專用的。因為無名管道不能顯式打開,因此只能由父子進程之間、兄弟進程之間或者其他有親緣關系并且都繼承了祖先進程的管道文件對象的兩個進程間通信使用。命名管道是有文件名和磁盤i節點的,因此可由任意兩個或多個進程間通信使用,它的使用方法和普通文件類似,都遵循打開、讀、寫、關閉這樣的過程,但是讀寫的內部實現和普通文件不同,而和無名管道一樣。
2 無名管道的工作方式
管道以先進先出方式保存一定數量的數據。使用管道的時候一個進程從管道的一端寫,另一個進程從管道的另一端讀。在主進程中利用fork()函數創建一個子進程,這樣父子進程同時擁有對同一管道的讀寫句柄,因為管道沒有提供鎖定的保護機制,所以必須決定數據的流動方向,然后在相應進程中關閉不需要的句柄。這樣,就可以使用read()和write()函數來對它進行讀寫操作了。使用無名管道進行進程間通信的步驟概述如下:
①創建所需的管道;
②生成(多個)子進程;
③關閉/復制文件描述符,使之與相應的管道末端相聯系;
④關閉不需要的管道末端;
⑤進行通信活動;
⑥關閉所有剩余的打開文件描述符
⑦等待子進程結束。
由于read()函數和write()函數對管道操作自身帶有阻塞作用,能夠保證一個進程必須先進行寫操作,然后另外的進程才能進行讀操作,從而實現父子進程的同步。
2.2 無名管道的建立和使用
2.2.1 管道的創建pipe函數
#include
函數的參數中有兩個文件描述符:fd用于管道的read端,fd用于管道的write端。創建成功則返回值0,否則返回-1值。
2.2.2 寫管道write函數
ret=write(fd,buf,n)
若管道已滿,則被阻塞,直到管道另一端read將已進人管道的數據取走為止。
2.2.3 讀管道read函數ret=read(fd,buf,n)
若管道為空,且寫端文件描述字未關閉,則被阻塞。若管道寫端已關閉,則返回0。若管道不為空,分兩種情況:(設管道中實際有m個字節),如n>=m,則讀m個;如果n 2.2.4 關閉管道close函數 關閉寫端則導致讀端read調用返回0;關閉讀端,則導致寫端write調用返回-1,errno被設為EPIPE,在寫端write函數退出前,進程還會收到SIPE信號(默認處理是終止進程,該信號可以被捕捉)。 2.2.5 文件描述符的復制dup2 intdup2(intfdl,intfd2); 復制文件描述符fdl到fd2。fd2可以是空閑的文件描述符,如果fd2是已打開文件,則關閉fd2;如果fd1不是有效的描述符,則不關閉fd2,調用失敗。 2.3 關于無名管道需要注意的幾個問題 ①管道是半雙工方式,數據只能單向傳輸。如果要在兩個進程之間相互傳送數據,就要建立兩條管道。 ②pipe()調用必須在調用fork()以前進行,否則子進程將無法繼承文件描述符。 ③使用無名管道互相連接的任意進程必須位于一個相關的進程家族里。因為管道必須受到內核的限制,所以如果進程沒有在管道創建者的家族里面,則該進程將無法訪問管道。 3 命名管道 在Linux中,可以識別命名管道文件。例如:$ls-lfilenameprw-r--r--lrootroot0sep2719:40filename|filename文件名后跟著一個“|”符號表明該文件是管道文件。 3.1 命名管道的工作方式 無名管道應用的一個重大限制是只能用于具有親緣關系的進程間通信,在命名管道提出后,該限制得到了克服。命名管道提供一個路徑名與之關聯,以FIFO的文件形式存在于文件系統中。這樣,即使與FIFO的創建進程不存在親緣關系的進程,只要可以訪問該路徑,就能夠彼此通過FIFO相互通信。因此,通過FIFO,不相關的進程也能交換數據。FIFO管道的打開方式與普通管道有所不同,普通管道包括兩個文件數據結構:對應的VFS索引節點以及共享數據頁,在進程每次運行時都會創建一次,而FIFO是一直存在的,需要用戶打開和關閉。Lnux必須處理讀進程先于寫進程打開管道、讀進程在寫進程寫入數據之前讀入這兩種情況。除此之外,FIFO管道的使用方式與普通管道完全相同,都使用相同的數據結構和操作。 3.2 FIFO文件的創建 命名管道的創建有兩種常見的方法:在shell提示符下使用mknod命令或在程序中使用mk()系統調用。 3.2.1 shell命令行方式 殼層命令行方式如下 $mknodfilenamep $mkfifoa=rwfilename 這兩個命令行均可創建FIFO文件filename。mkfifo提供了直接改變文件讀寫權限的功能。mknod創建的文件通過chmod可以改變權限。其中參數p表示所建立的節點,即特殊文件的類型為命名管道。 4 管道的不足 管道提供了從一種進程向另一種進程傳輸數據的有效方法,但是,管道還是存在一些不足: ①因為讀數據的同時也將數據從管道移去,因此管道不能用來對多個接受者廣播數據。 ②如果一個管道有多個讀進程,那么寫進程不能發送數據到指定的讀進程。同樣,如果有多個寫進程,那么沒有方法來判別是它們中的哪一個發送的數據。 參考資料 > 管道.中文大百科全書.2024-02-23 Linux進程間通信:管道及有名管道.中關村在線.2020-03-17 淺談壓力管道的分類分級及工程應用實例.中國知網.2020-03-17 中壓蒸汽管道設計的探討.中國知網.2020-03-17 周超,董軍軍. Linux進程間管道通信的研究[J]. 電腦開發與應用,2008,(01):48-50..中國知網.2020-03-17