大功高成了,我們管道一端連在了新進程的標準輸出端了,一端可以自己用API函數ReadFile讀取了。等等,不對,我們的管道還有問題。我們把 hWrite給了hStdOutput和hStdError,那么在新的進程啟動時就會在新進程中打開一個管道寫入端,而我們在當前進程中使用了 CreatePipe創建了一個管道,那么在當前進程中也有這個管道的寫入端hWrite。好了,這里出現了一個有兩個寫入端和一個讀出端的畸形管道。這樣的管道肯定是有問題的。由于當前進程并不使用寫端,因此我們必須關閉當前進程的寫端。這樣,我們的管道才算真正的建立成功了。來看看VC++寫的源程序:
/*
* 通過管道技術,將dir /?的幫助信息輸入到MFC應用程序的一個CEdit控件中。
* VC++6.0 + WinXP 通過
*
* detrox, 2003
*/
void CPipeDlg::OnButton1()
{
SECURITY_ATTRIBUTES sa;
HANDLE hRead,hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
文章來源于領測軟件測試網 http://www.kjueaiud.com/