通過pipe進程間通信

通過pipe進程間通信

ID:42657704

大?。?1.10 KB

頁數(shù):13頁

時間:2019-09-19

通過pipe進程間通信_第1頁
通過pipe進程間通信_第2頁
通過pipe進程間通信_第3頁
通過pipe進程間通信_第4頁
通過pipe進程間通信_第5頁
資源描述:

《通過pipe進程間通信》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、基于visualc++之windows核心編程代碼分析(17)通過pipe進程間通信分類:VC++編程技術(shù)VisualC++2010編程技術(shù)VisualStudio2012Windows8信息安全2011-12-1712:17120人閱讀評論(0)收藏舉報管道是一種用于在進程間共享數(shù)據(jù)的機制,其實質(zhì)是一段共享內(nèi)存。Windows系統(tǒng)為這段共享的內(nèi)存設(shè)計采用數(shù)據(jù)流I/0的方式來訪問。由一個進程讀、另一個進程寫,類似于一個管道兩端,因此這種進程間的通信方式稱作“管道”。???管道分為匿名管道和命名管道。??

2、?匿名管道只能在父子進程間進行通信,不能在網(wǎng)絡(luò)間通信,而且數(shù)據(jù)傳輸是單向的,只能一端寫,另一端讀。???命令管道可以在任意進程間通信,通信是雙向的,任意一端都可讀可寫,但是在同一時間只能有一端讀、一端寫。?管道客戶端代碼實現(xiàn)如下viewplaincopytoclipboardprint?1./*?頭文件?*/??2.#include????3.#include???4.#include???5.#include???6./*?常

3、量?*/??7.#define?BUFSIZE?512??8./*?************************************?9.*?int?main(VOID)??10.*?功能????pipe?通信服務(wù)端主函數(shù)?11.**************************************/??12.int?main(int?argc,?TCHAR?*argv[])???13.{???14.????HANDLE?hPipe;???15.????LPTSTR?lpvMessage=

4、TEXT("Default?message?from?client");???16.????TCHAR?chBuf[BUFSIZE];???17.????BOOL?fSuccess;???18.????DWORD?cbRead,?cbWritten,?dwMode;???19.????LPTSTR?lpszPipename?=?TEXT("\\.\pipe\samplenamedpipe");???1.??2.????if(?argc?>?1?)???//?如果輸入了參數(shù),則使用輸入的參數(shù)??3

5、.????????lpvMessage?=?argv[1];??4.????while?(1)???5.????{???6.????????//?打開一個命名pipe??7.????????hPipe?=?CreateFile(???8.????????????lpszPipename,???//?pipe?名???9.????????????GENERIC_READ?

6、???GENERIC_WRITE,?????//??可讀可寫??10.????????????0,??????????????//?不

7、共享??11.????????????NULL,???????????//?默認安全屬性??12.????????????OPEN_EXISTING,??//?已經(jīng)存在(由服務(wù)端創(chuàng)建)??13.????????????0,??????????????//?默認屬性??14.????????????NULL);??????15.????????if?(hPipe?!=?INVALID_HANDLE_VALUE)???16.????????????break;???17.??18.????????//?如果

8、不是?ERROR_PIPE_BUSY?錯誤,直接退出????19.????????if?(GetLastError()?!=?ERROR_PIPE_BUSY)???20.????????{??21.????????????printf("Could?not?open?pipe");???22.????????????return?0;??23.????????}??24.??25.????????//?如果所有pipe實例都處于繁忙狀態(tài),等待2秒。??26.????????if?(!WaitNamedP

9、ipe(lpszPipename,?2000))???27.????????{???28.????????????printf("Could?not?open?pipe");???29.????????????return?0;??30.????????}???31.????}???32.??33.????//?pipe已經(jīng)連接,設(shè)置為消息讀狀態(tài)???34.????dwMode?=?PIPE_READMODE_MESSAGE;???35.?

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。