C 程序通訊之匿名管道

2021-07-25 11:38:13 字數 1428 閱讀 8748

匿名管道只能用來實現同一臺機器上父子程序間通訊,而不能實現跨網路的通訊。

利用匿名管道實現父子程序通訊時,需要注意:因為匿名管道沒有名稱,所以只能在父程序中呼叫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...