一、基本函式介紹
bool createpipe( //建立管道
phandle hreadpipe, //管道讀資料控制代碼
phandle hwritepipe, //管道寫資料控制代碼
plsecurity_attributes lppipeattributes, //安全屬性,成員binherthandle表示子程序是否可繼承
dword nsize //管道緩衝區大小,0代表預設緩衝區代銷
) 安全屬性結構體如下:
typedef struct _security_attrbutessecurity_attrbutes,*plsecurity_attributes;
typedef struct _startupinfo startupinfo, *lpstartupinfo;
typedef struct_process_informationprocess_information;
二、匿名管道:只用於父子程序
建立匿名管道
security_attributes sa;
sa.binherithandle = true;
sa.nlength = sizeof(security_attributes);
sa.lpsecuritydescriptor = null;
if (!createpipe(&hread, &hwrite, &sa, 0))
startupinfo sui;
zeromemory(&sui, sizeof(startupinfo));
sui.cb = sizeof(startupinfo);
sui.dwflags = startf_usestdhandles;
sui.hstdinput = hread;
sui.hstdoutput = hwrite;
sui.hstderror = getstdhandle(std_error_handle);
process_information pi;
if (!createprocess(l"..\\debug\\pipechild.exe", null, null
, null, true, 0, null, null, &sui, &pi))
closehandle(pi.hprocess);
closehandle(pi.hthread);
讀取資料
char szbuf[100] = ;
dword dwread;
if (!readfile(hread, szbuf, 100, &dwread, null))
cstring strdata(szbuf);
messagebox(strdata);
寫入資料
char szdata = "parent:this is a test";
dword dwwrite;
if (!writefile(hwrite, szdata, strlen(szdata) + 1, &dwwrite, null))
tips:在子程序需要獲取父程序建立時指定的管道操作控制代碼
三、命名管道
建立管道
hpipe = createnamedpipe(l"\\\\.\\pipe\\mypipe", pipe_access_duplex
if (invalid_handle_value == hpipe)
//建立那麼人工重置事件物件
handle hevent = createevent(null, true, false, null);
if (null == hevent)
ovlap.hevent = hevent;
if (!connectnamedpipe(hpipe, &ovlap))
}if (wait_failed == waitforsingleobject(hevent, infinite))
closehandle(hevent);
連線管道
if (!waitnamedpipe(l"\\\\.\\pipe\\mypipe", nmpwait_wait_forever))
hpipe = createfile(l"\\\\.\\pipe\\mypipe", generic_read
| generic_write, 0, null, open_existing, file_attribute_normal, null);
if (invalid_handle_value == hpipe)
管道讀寫和匿名管道保持一致 pipe函式使用
dup 和dup2 pthread join 2008 12 11 15 45 54 分類 天天向上 標籤 字型大小 大中小訂閱 pipe 建立管道 表頭檔案 include 定義函式 int pipe int filedes 2 函式說明 pipe 會建立管道,並將檔案描述詞由引數 filedes...
Linux管道pipe使用例項
函式 include int pipe int filedes 2 描述pipe 函式建立乙個管道和指向該管道的一對檔案描述符,並且將檔案描述符儲存到檔案描述符陣列filedes中。其中filedes 0 為讀端,filedes 1 為寫端。返回值0 管道建立成功 1 管道建立失敗,同時errno置...
例項 Linux管道pipe的使用
例項 linux管道pipe的使用 moakap總結 函式 include int pipe int filedes 2 描述 pipe 函式建立乙個管道和指向該管道的一對檔案描述符,並且將檔案描述符儲存到檔案描述符陣列filedes中。其中filedes 0 為讀端,filedes 1 為寫端。返...