匿名管道只能用來實現同一臺機器上父子程序間通訊,而不能實現跨網路的通訊。
利用匿名管道實現父子程序通訊時,需要注意:因為匿名管道沒有名稱,所以只能在父程序中呼叫createprocess函式建立子執行緒時,將管道的讀寫控制代碼傳遞給子執行緒。
1.父程序**
private:
handle m_hread;//匿名管道讀控制代碼
handle m_hwrite;//匿名管道寫控制代碼
void cparentview::onpipecreate()
startupinfo sui;
process_information pi;
zeromemory(&sui, sizeof(startupinfo));
sui.cb = sizeof(startupinfo);
sui.dwflags = startf_usestdhandles;
sui.hstdinput = m_hread;//設定子程序的標準輸入控制代碼為管道讀控制代碼
sui.hstdoutput = m_hwrite;//設定子程序的標準輸出控制代碼為管道寫控制代碼
sui.hstderror = getstdhandle(std_error_handle);//設定子程序的錯誤控制代碼為父程序錯誤控制代碼
if (!createprocess("..\\..\\child\\debug\\child.exe", null, null, null, true, 0, null, null, &sui, &pi))//建立子程序
else }
void cparentview::onpiperead()
else }
void cparentview::onpipewrite()
}
2.子程序**
private:
handle m_hread;//匿名管道讀控制代碼
handle m_hwrite;//匿名管道寫控制代碼
void cchildview::oninitialupdate()
void cchildview::onpiperead()
messagebox(buf);
}void cchildview::onpipewrite()
}
程序間通訊 匿名管道通訊
將關於匿名管道通訊過程中遇到的問題以及心得總結一下 使用場合 匿名管道通訊對執行緒間通訊和父子程序之間的通訊非常有用 一下 分三部分 1.建立匿名管道 2.建立子程序 1 使用getstdhandle函式獲取標準輸出裝置的控制代碼 2 使用setstdhandle函式將標準輸出到寫匿名管道 3 使用...
Python程序間通訊之匿名管道
管道是乙個單向通道,有點類似共享記憶體快取.管道有兩端,包括輸入端和輸出端.對於乙個程序的而言,它只能看到管道一端,即要麼是輸入端要麼是輸出端.os.pipe 返回2個檔案描述符 r,w 表示可讀的和可寫的.示例 如下 usr bin python import time import os def...
Linux程序通訊之管道(匿名,命名)
每個程序各 自有不同的 使用者位址空間,任何 乙個程序的全域性變數在另 乙個程序中都看不到 所以進 程之間要交換資料必須通過核心,在核心中開闢 一塊緩衝區,程序1把資料從 使用者空間 拷到核心緩 沖區,程序2再從核心緩衝區把資料讀 走,核心提供的這種機制稱為程序間通訊 ipc,interproces...