Windows 引入了多進(jìn)程和多線(xiàn)程機(jī)制。同時(shí)也提供了多個(gè)進(jìn)程之間的通信手段,包括剪貼板、DDE、OLE、管道等,和其他通信手段相比,管道有它自己的限制和特點(diǎn),管道實(shí)際上是一段共享內(nèi)存區(qū),進(jìn)程把共享消息放在那里。并通過(guò)一些 API 提供信息交換。
命名管道是由服務(wù)器端的進(jìn)程建立的,管道的命名必須遵循特定的命名方法,就是 "\\.\pipe\管道名",當(dāng)作為客戶(hù)端的進(jìn)程要使用時(shí),使用"\\計(jì)算機(jī)名\\pipe\管道名" 來(lái)打開(kāi)使用,具體步驟如下:
服務(wù)端通過(guò)函數(shù) CreateNamedPipe 創(chuàng)建一個(gè)命名管道的實(shí)例并返回用于今后操作的句柄,或?yàn)橐汛嬖诘墓艿绖?chuàng)建新的實(shí)例。 服務(wù)端偵聽(tīng)來(lái)自客戶(hù)端的連接請(qǐng)求,該功能通過(guò) ConnectNamedPipe 函數(shù)實(shí)現(xiàn)。 客戶(hù)端通過(guò)函數(shù) WaitNamedPipe 來(lái)等待管道的出現(xiàn),如果在超時(shí)值變?yōu)榱阋郧埃幸粋€(gè)管道可以使用,則 WaitNamedPipe 將返回 True,并通過(guò)調(diào)用 CreateFile 或 CallNamedPipe 來(lái)呼叫對(duì)服務(wù)端的連接。 此時(shí)服務(wù)端將接受客戶(hù)端的連接請(qǐng)求,成功建立連接,服務(wù)端 ConnectNamedPipe 返回 True 建立連接之后,客戶(hù)端與服務(wù)器端即可通過(guò) ReadFile 和 WriteFile,利用得到的管道文件句柄,彼此間進(jìn)行信息交換。 當(dāng)客戶(hù)端與服務(wù)端的通信結(jié)束,客戶(hù)端調(diào)用 CloseFile,服務(wù)端接著調(diào)用 DisconnectNamedPipe。最后調(diào)用函數(shù)CloseHandle來(lái)關(guān)閉該管道。 由于命名管道使用時(shí)作為客戶(hù)端的程序必須知道管道的名稱(chēng),所以更多的用在同一"作者"編寫(xiě)的服務(wù)器/工作站程序中,你不可能隨便找出一個(gè)程序來(lái)要求它和你寫(xiě)的程序來(lái)通過(guò)命名管道通信。而匿名管道的使用則完全不同,它允許你和完全不相干的進(jìn)程通信,條件是這個(gè)進(jìn)程通過(guò)控制臺(tái)"console"來(lái)輸入輸出,典型的例子是老的 Dos 應(yīng)用程序,它們?cè)谶\(yùn)行時(shí) Windows 為它們開(kāi)了個(gè) Dos 窗口,它們的輸入輸出就是 console 方式的。還有一些標(biāo)準(zhǔn)的 Win32 程序也使用控制臺(tái)輸入輸出,如果在 Win32 編程中不想使用圖形界面,你照樣可以使用 AllocConsole 得到一個(gè)控制臺(tái),然后通過(guò) GetStdHandle 得到輸入或輸出句柄,再通過(guò) WriteConsole 或 WriteFile 把結(jié)果輸出到控制臺(tái)(通常是一個(gè)象 Dos 窗口)的屏幕上。雖然這些程序看起來(lái)象 Dos 程序,但它們是不折不扣的 Win32 程序,如果你在純 Dos 下使用,就會(huì)顯示"The program must run under Windows!"。
一個(gè)控制臺(tái)有三個(gè)句柄:標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和和標(biāo)準(zhǔn)錯(cuò)誤句柄,標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出句柄是可以重新定向的,你可以用匿名管道來(lái)代替它,這樣一來(lái),你可以在管道的另一端用別的進(jìn)程來(lái)接收或輸入,而控制臺(tái)一方并沒(méi)有感到什么不同,就象 Dos 下的 > 或者 < 可以重新定向輸出或輸入一樣。通??刂婆_(tái)程序的輸入輸出如下:
(控制臺(tái)進(jìn)程output) write ----> 標(biāo)準(zhǔn)輸出設(shè)備(一般是屏幕)
(控制臺(tái)進(jìn)程input) read <---- 標(biāo)準(zhǔn)輸入設(shè)備(一般是鍵盤(pán))
而用管道代替后:
(作為子進(jìn)程的控制臺(tái)進(jìn)程output) write ----> 管道1 ----> read (父進(jìn)程)
(作為子進(jìn)程的控制臺(tái)進(jìn)程input) read <----> 管道2 <---- write (父進(jìn)程)
使用匿名管道的步驟如下:
使用 CreatePipe 建立兩個(gè)管道,得到管道句柄,一個(gè)用來(lái)輸入,一個(gè)用來(lái)輸出 準(zhǔn)備執(zhí)行控制臺(tái)子進(jìn)程,首先使用 GetStartupInfo 得到 StartupInfo 使用第一個(gè)管道句柄代替 StartupInfo 中的 hStdInput,第二個(gè)代替 hStdOutput、hStdError,即標(biāo)準(zhǔn)輸入、輸出、錯(cuò)誤句柄 使用 CreateProcess 執(zhí)行子進(jìn)程,這樣建立的子進(jìn)程輸入和輸出就被定向到管道中 父進(jìn)程通過(guò) ReadFile 讀第二個(gè)管道來(lái)獲得子進(jìn)程的輸出,通過(guò) WriteFile 寫(xiě)第一個(gè)管道來(lái)將輸入寫(xiě)到子進(jìn)程 父進(jìn)程可以通過(guò) PeekNamedPipe 來(lái)查詢(xún)子進(jìn)程有沒(méi)有輸出 子進(jìn)程結(jié)束后,要通過(guò) CloseHandle 來(lái)關(guān)閉兩個(gè)管道。 下面是具體的說(shuō)明和定義:
1. 建立匿名管道使用 CreatePipe 原形如下:
BOOL CreatePipe(
PHANDLE hReadPipe, // address of variable for read handle
PHANDLE hWritePipe, // address of variable for write handle
LPSECURITY_ATTRIBUTES lpPipeAttributes, // pointer to security attributes
DWORD nSize // number of bytes reserved for pipe
);
當(dāng)管道建立后,結(jié)構(gòu)中指向的 hReadPipe 和 hWritePipe 可用來(lái)讀寫(xiě)管道,當(dāng)然由于匿名管道是單向的,你只能使用其中的一個(gè)句柄,參數(shù)中的 SECURITY_ATTRIBUTES 的結(jié)構(gòu)必須填寫(xiě),定義如下:
typedef struct_SECURITY_ATTRIBUTES{
DWORD nLength: //定義以字節(jié)為單位的此結(jié)構(gòu)的長(zhǎng)度
LPVOID lpSecurityDescriptor; //指向控制這個(gè)對(duì)象共享的安全描述符,如果為NULL這個(gè)對(duì)象將被分配一個(gè)缺省的安全描述
BOOL bInheritHandle; //當(dāng)一個(gè)新過(guò)程被創(chuàng)建時(shí),定義其返回是否是繼承的.供系統(tǒng)API函數(shù)使用.
}SECURITY_ATTRIBUTES;
2. 填寫(xiě)創(chuàng)建子進(jìn)程用的 STARTUPINFO 結(jié)構(gòu),一般我們可以先用 GetStartupInfo 來(lái)填寫(xiě)一個(gè)缺省的結(jié)構(gòu),然后改動(dòng)我們用得到的地方,它們是:
hStdInput -- 用其中一個(gè)管道的 hWritePipe 代替 hStdOutput、hStdError -- 用另一個(gè)管道的 hReadPipe 代替 dwFlags -- 設(shè)置為 STARTF_USESTDHANDLES or STARTF_USESHOWWINDOW 表示輸入輸出句柄及 wShowWindow 字段有效 wShowWindow -- 設(shè)置為 SW_HIDE,這樣子進(jìn)程執(zhí)行時(shí)不顯示窗口。 填寫(xiě)好以后,就可以用 CreateProcess 來(lái)執(zhí)行子進(jìn)程了,具體有關(guān)執(zhí)行子進(jìn)程的操作可以參考上一篇教程《進(jìn)程控制》
3. 在程序中可以用 PeekNamedPipe 查詢(xún)子進(jìn)程有沒(méi)有輸出,原形如下:
BOOL PeekNamedPipe(
HANDLE hNamedPipe, // handle to pipe to copy from
LPVOID lpBuffer, // pointer to data buffer
DWORD nBufferSize, // size, in bytes, of data buffer
LPDWORD lpBytesRead, // pointer to number of bytes read
LPDWORD lpTotalBytesAvail, // pointer to total number of bytes available
LPDWORD lpBytesLeftThisMessage // pointer to unread bytes in this message
);
我們可以將嘗試讀取 nBuffersize 大小的數(shù)據(jù),然后可以通過(guò)返回的 BytesRead 得到管道中有多少數(shù)據(jù),如果不等于零,則表示有數(shù)據(jù)可以讀取。
4. 用 ReadFile 和 WriteFile 來(lái)讀寫(xiě)管道,它們的參數(shù)是完全一樣的,原形如下:
ReadFile or WriteFile(
HANDLE hFile, // handle of file to read 在這里使用管道句柄
LPVOID lpBuffer, // address of buffer that receives data 緩沖區(qū)地址
DWORD nNumberOfBytesToRead, // number of bytes to read 準(zhǔn)備讀寫(xiě)的字節(jié)數(shù)
LPDWORD lpNumberOfBytesRead, // address of number of bytes read,實(shí)際讀到的或?qū)懭氲淖止?jié)數(shù)
LPOVERLAPPED lpOverlapped // address of structure for data 在這里用 NULL
);
5. 用 CloseHandle 關(guān)閉管道一和管道二的 hReadPipe和 hWritePipe 這四個(gè)句柄。
下面給出了一個(gè)例子程序,這個(gè)程序是上篇教程《進(jìn)程控制》的例子的擴(kuò)充,如果你對(duì)有的 api 感到陌生的話(huà),請(qǐng)先閱讀上一篇教程。
管道是兩個(gè)頭的東西,每個(gè)頭各連接一個(gè)進(jìn)程或者同一個(gè)進(jìn)程的不同代碼,按照管道的類(lèi)別分有兩種管道,匿名的和命名的;按照管道的傳輸方向分也可以分成兩種,單向的雙向的。根據(jù)管道的特點(diǎn),命名管道通常用在網(wǎng)絡(luò)環(huán)境下不同計(jì)算機(jī)上運(yùn)行的進(jìn)程之間的通信(當(dāng)然也可以用在同一臺(tái)機(jī)的不同進(jìn)程中)它可以是單向或雙向的;而匿名管道只能用在同一臺(tái)計(jì)算機(jī)中,它只能是單向的。匿名管道其實(shí)是通過(guò)用給了一個(gè)指定名字的有名管道來(lái)實(shí)現(xiàn)的。
使用管道的好處在于:讀寫(xiě)它使用的是對(duì)文件操作的 api,結(jié)果操作管道就和操作文件一樣。即使你在不同的計(jì)算機(jī)之間用命名管道來(lái)通信,你也不必了解和自己去實(shí)現(xiàn)網(wǎng)絡(luò)間通信的具體細(xì)節(jié)。
先把公用的線(xiàn)作為組合管道識(shí)別,然后識(shí)別單個(gè)的回路并與組合管道相交。在組合管道與配電箱的連接處設(shè)置為起點(diǎn),各回路分別選擇起點(diǎn)。一要就OK了。
這種塑鋼復(fù)合管的管內(nèi)外壁是PP-R,中間是鋼絲網(wǎng)骨架,所以清單描述的連接方式不準(zhǔn)確,這種管子的連接方式只有熱熔和電熱熔,不是卡壓連接,這種管子套用的子目是塑料管熱熔或者是電熱熔連接定額子目
如果家中已經(jīng)安裝有煤氣管道,只是還沒(méi)掛表,這樣的零星用戶(hù)需要到各天然氣營(yíng)業(yè)廳繳納2300元報(bào)裝費(fèi)(含IC卡表)后,當(dāng)天即可點(diǎn)火通氣;對(duì)于樓內(nèi)沒(méi)有煤氣管道的用戶(hù),需要派代表集體報(bào)裝,而且報(bào)裝住戶(hù)要達(dá)到9...
格式:pdf
大?。?span id="vv4refa" class="single-tag-height">177KB
頁(yè)數(shù): 未知
評(píng)分: 4.5
PE燃?xì)夤艿涝诎惭b施工過(guò)程中,因未及時(shí)封堵或地下水位過(guò)高易造成管道內(nèi)積水和其他雜質(zhì)進(jìn)入管道系統(tǒng)內(nèi),從而影響燃?xì)夤艿拦獾陌踩院涂煽啃?因此新建PE燃?xì)夤艿涝谕馐褂弥皯?yīng)進(jìn)行管道清管,保證燃?xì)廨斉涔芫W(wǎng)的安全正常運(yùn)行.該指引對(duì)清管的方法和相關(guān)操作做了說(shuō)明,供PE管道在安裝施工過(guò)程中參考、執(zhí)行.
格式:pdf
大?。?span id="bngh4hf" class="single-tag-height">177KB
頁(yè)數(shù): 2頁(yè)
評(píng)分: 4.6
燃?xì)夤艿缆鈸屝薏僮饕?guī)程 一、埋地管線(xiàn)搶修 1、到現(xiàn)場(chǎng)后根據(jù)泄露情況設(shè)置警戒線(xiàn),通過(guò)打探孔及檢漏儀檢測(cè)濃 度等必要的檢測(cè)方式,初步確定漏氣位置,并開(kāi)始開(kāi)挖。施工途中防 止火花及中毒現(xiàn)象,所挖工作坑尺寸要符合規(guī)范要求現(xiàn)場(chǎng)搶修的需 要。 2、對(duì)需要停氣作業(yè)的搶修,切斷有關(guān)閥門(mén),關(guān)閉有關(guān)調(diào)壓器,對(duì)管 線(xiàn)進(jìn)行放散。 3、搶修完畢恢復(fù)供氣之前,應(yīng)對(duì)因搶修造成的停氣區(qū)域進(jìn)行恢復(fù)供 氣宣傳,為確保安全,不得在 21:00至次日 6:00之間對(duì)用戶(hù)恢復(fù) 供氣。 4、恢復(fù)供氣時(shí),壓力應(yīng)逐漸升高,并對(duì)搶修部位進(jìn)行檢漏。確認(rèn)不 漏時(shí),逐漸開(kāi)啟閥門(mén),啟動(dòng)調(diào)壓器,恢復(fù)供氣。 5、在管內(nèi)壓力達(dá)到正常工作壓力時(shí),對(duì)接口進(jìn)行逐一檢漏,確認(rèn)不 漏方可回填。 6、PE管發(fā)生斷裂、開(kāi)裂、意外損壞時(shí),搶修應(yīng)符合以下規(guī)定: (1)采取關(guān)閉閥門(mén)等方式有效阻斷氣源, 并保證 PE管熔接面處不受 壓力; (2)搶修作業(yè)應(yīng)防止靜電產(chǎn)生和積
內(nèi)容簡(jiǎn)介
《圖解管道安裝操作技術(shù)》是《圖解管道安裝系列叢書(shū)》的第一冊(cè),書(shū)中全面介紹了管道安裝工程中的技術(shù)操作和安裝要求。全書(shū)共分七章,內(nèi)容包括管道加工及制作,管道連接,管道附件及其安裝,支吊架制作及安裝,管道起重吊裝操作技術(shù),管道試壓、防腐、絕熱,管道安裝的安全技術(shù)?! 秷D解管道安裝操作技術(shù)》內(nèi)容實(shí)用性、操作性強(qiáng),直觀明了,通俗易懂,可作為剛剛走上工作崗位且又從事技術(shù)工作的大中專(zhuān)畢業(yè)生的必備書(shū),也可供具有中級(jí)技術(shù)職稱(chēng)的技術(shù)人員和中級(jí)以上的技術(shù)工人及高等院校相關(guān)專(zhuān)業(yè)的師生參考。2100433B
本書(shū)內(nèi)容包括常用管材及管件、管道工常用機(jī)具、管道識(shí)圖、各種管道安裝的基本操作技術(shù)與工藝等9章。該書(shū)圖文并茂,通俗易懂,言簡(jiǎn)意賅,適合中等職業(yè)學(xué)校、技工學(xué)校、青工培訓(xùn)班的管道工專(zhuān)業(yè)教學(xué)用書(shū)及管道工自學(xué)用書(shū)。
本書(shū)以實(shí)用、夠用為原則,突出技能操作,以圖解的形式,配以簡(jiǎn)明的文字來(lái)說(shuō)明具體的操作過(guò)程與操作工藝,有很強(qiáng)的針對(duì)性和實(shí)用性,克服了傳統(tǒng)培訓(xùn)教材中理論內(nèi)容偏深、偏多、抽象的弊端,增添了“四新”知識(shí),突出了理論與實(shí)踐的結(jié)合,讓學(xué)員既學(xué)到真本事,又可應(yīng)對(duì)職業(yè)技能鑒定考試,體現(xiàn)了科學(xué)性和實(shí)用性。 本書(shū)介紹的內(nèi)容是從業(yè)者應(yīng)掌握的基本知識(shí)和基本操作技能,書(shū)中提供的典型實(shí)例都是成熟的操作工藝,便于學(xué)習(xí)者模仿和借鑒,減少學(xué)習(xí)彎路,使其能更方便、更好地運(yùn)用到實(shí)際生產(chǎn)中去,是學(xué)習(xí)者從業(yè)和就業(yè)的良師益友。 2100433B
1、將產(chǎn)品倒入40克左右,加入1公斤的水,等10分鐘,等待管道疏通劑充分反應(yīng);
2、再倒入40克,加入1公斤的水,等10分鐘;
3、等特20-30分鐘,用大量的水沖即可疏通;
根據(jù)堵塞情況不同,具體的疏通方式不同。詳見(jiàn)如下方法
示范方法一
1)廁所嚴(yán)重堵塞,滴水不漏,用皮搋子壓走一部分。
2)然后在入口倒入40g左右管道疏通劑(輕微可適量減少用量),1個(gè)小時(shí)內(nèi)會(huì)自動(dòng)疏通。
3)1小時(shí)如果未通,用膠桶裝滿(mǎn)水對(duì)準(zhǔn)入口直接沖撞,增加管道內(nèi)壓力,或者用皮搋子給與壓力輸通。
示范方法二
1)廁所堵塞,出水非常慢。
2)在入口位置倒入一瓶管道疏通劑,然后加約1公斤水,使產(chǎn)品充分溶解后會(huì)慢慢滲透到堵塞位置。
3)當(dāng)水位降低后再加入適量的水,將管道疏通劑溶解液推到管道堵塞位置,1個(gè)小時(shí)后用大量水沖就會(huì)疏通。
示范方法三
1)洗菜,洗碗池堵塞先將軟管從管內(nèi)撥出。
2)在管口直接倒入40克綠傘管道通,加入一瓶礦泉水量的水。
3)倒入后用物體直接將管口壓實(shí),疏通劑溶解會(huì)產(chǎn)生約80-100度的高溫,生成大量的氣體,會(huì)將堵塞物體往下沖,幾分鐘后即可疏通。