易語言編程之匿名管道應(yīng)用指南 |
作者:Wise☆Ma… 文章來源:本站原創(chuàng) 點(diǎn)擊數(shù):164 更新時(shí)間:2009/10/3 13:30:28 ![]() |
1、概述: 什么是匿名管道: 答:匿名管道(Pipe)是指 父進(jìn)程與子進(jìn)程之間的通訊方式之一。 2、使用到的API函數(shù): CreatePipe 創(chuàng)建匿名管道 CloseHandle 關(guān)閉句柄,在后面可以用于關(guān)閉多余的管道 CreateProcessA 創(chuàng)建一個(gè)新的進(jìn)程,可以設(shè)置讀寫管道 PeekNamedPipe 查看管道中的數(shù)據(jù) ReadFile 讀文件,該命令可以用于讀取管道中的數(shù)據(jù) 3、結(jié)構(gòu)體(自定義數(shù)據(jù)類型) PROCESS_INFORMATION SECURITY_ATTRIBUTES STARTUPINFO 4、實(shí)現(xiàn)原理: 首先,定義一個(gè)整型變量hWrite SECURITY_ATTRIBUTES.nLength = 12 這里創(chuàng)建管道 STARTUPINFO.cb = 68 然后就可以讀取數(shù)據(jù)了。 5、補(bǔ)充說明: ①怎樣創(chuàng)建管道: 例如: CreateProcessA(0, “cmd.exe /c ” + 一個(gè)dos命令, 0, 0, 真, 0, 0, 0, STARTUPINFO, PROCESS_INFORMATION) ‘然后就用 CloseHandle 關(guān)閉多余句柄 CoseHandle(hWrite)'剛才定義的變量,此時(shí)是多余的句柄,關(guān)閉它! ②怎樣讀取出管道中的數(shù)據(jù)? step 1:PeekNamedPipe該函數(shù)看看管道中是否有數(shù)據(jù) e.g: PeekNamedPipe (讀取句柄, 0, 0, 0, 長度, 0)'兩個(gè)變量:讀取句柄 和 長度 step 2:當(dāng)管道中有數(shù)據(jù)時(shí)(此處可以加一個(gè)判斷語句,當(dāng) 長度(上面的變量) <>0 時(shí)開始讀取數(shù)據(jù) e.g: 定義幾個(gè)變量 :文本(字節(jié)集 型), 文本=取空白字節(jié)集(1024)'推薦使用1024這個(gè)值 1024b=1kb ReadFile(讀取句柄,文本,1023,長度,0) step 3:好了 得到文本: 到文本(文本) |
聯(lián)系客服