程序通訊 命名管道

2021-06-29 06:04:00 字數 2025 閱讀 9870

handle winapi createnamedpipe(

_in_ lpctstr lpname, //名稱:必須為\\.\pipe\pipename格式,「.」表示本地主機,如需聯網,就用主機名

_in_ dword dwopenmode,//開啟方式這裡用雙工pipe_access_duplex

_in_ dword dwpipemode,//位元組形式還是訊息形式

_in_ dword nmaxinstances,//可使用該管道的例項個數,建立者也算在內

_in_ dword noutbuffersize, //輸出緩衝區大小

_in_ dword ninbuffersize, //輸入緩衝區大小

_in_ dword ndefaulttimeout, >//預設超時waitnamedpipe用,所有例項此值需相同

_in_opt_ lpsecurity_attributes lpsecurityattributes//安全屬性

);

這裡特別要注意的就是名稱了,格式要對,別忘了轉義字元

ex:

hpipe = createnamedpipe("\\\\.\\pipe\\mypipe",

0, 1, 1024, 1024, 0, null);

bool winapi connectnamedpipe(

_in_ handle hnamedpipe, //createnamedpipe返回的控制代碼

);

ulong_ptr internal;

ulong_ptr internalhigh;

union ;

pvoid pointer;

};handle hevent;

ex:

if (wait_failed == waitforsingleobject(hevent, infinite))

bool winapi waitnamedpipe(

_in_ lpctstr lpnamedpipename, //管道名字

_in_ dword ntimeout //超時時長

);

handle winapi createfile(

_in_ lpctstr lpfilename,

_in_ dword dwdesiredaccess,

_in_ dword dwsharemode,

_in_opt_ lpsecurity_attributes lpsecurityattributes,

_in_ dword dwcreationdisposition,

_in_ dword dwflagsandattributes,

_in_opt_ handle htemplatefile

);

ex

createfile(sname, generic_read | generic_write, 0, null, open_existing, file_attribute_normal, null);

到此為止,server端和client端已經用命名管道建立起了聯絡。它們的讀寫分別為writefile和readfile,值得注意的是阻塞情況,適當地使用多執行緒產生worker執行緒即可。當然,產生執行緒也就要注意合適地結束它們。

最後,斷開管道api:

bool winapi disconnectnamedpipe(

_in_ handle hnamedpipe

);

很喜歡程式設計,喜歡深入了解一切的實現,作為新人,希望前輩們多多指正,多多鼓勵,謝謝。

程序通訊1 管道 命名管道

匿名管道 管道是一種簡單的程序通訊 ipc 機制。管道實質上就是pipe函式在核心中開闢了一段緩衝區,有乙個讀端和乙個寫端。兩個程序之間能夠通訊的本質 通過fork函式傳遞檔案描述符 子程序是父程序的副本,父程序所有開啟的檔案描述符都被複製到子程序中,父子程序的每個相同的開啟描述符共享乙個檔案表項 ...

程序通訊 命名管道 FIFO

一.命名管道 fifo fifo不同於管道之處在於它提供一 個路徑名與之關聯,以fifo的檔案形式儲存於檔案系統中。命名管道是乙個裝置檔案,因 此,即使程序與建立fifo的程序不存在親緣關係,只要可以訪問該路徑,就能夠通過fifo 相互通訊。值得注意的是,fifo rst input rst out...

Linux 程序通訊 命名管道

在之前的部落格中介紹了程序通訊中的無名管道通訊pipe,也對無名管道的侷限性進行了剖析。在這裡,提出命名管道的概念fifo,可解決無名管道的侷限性,命名管道到底是通過什麼機制進行通訊的?請看下面 命名管道 fifo 顧名思義,first input first output,按照先進先出的原則工作,...