管道提供了一種進程間通訊的方法,匿名管道提供本地計算機上的進程間通訊,匿名管道爲單向的,不能在網絡上使用。它們只支持單一服務器實例。匿名管道對線程間通訊或是父子進程之間的通訊很是有用,對於後者,管道句柄能夠輕鬆地傳遞給子進程(在子進程建立之時)。子進程能夠繼承父進程中建立的句柄,父子進程一一對應的關係不會被打亂。並且使用簡單,父子進程能夠雙向通訊。服務器
一、GlobalLock函數的做用是對全局內存對象加鎖,有個做用是將內存句柄換成指針類型的內存地址。用完後必定要調用GlobalUnLock解鎖。網絡
二、GetStdHandle函數得到標準輸入、輸出或者標準錯誤句柄,當調用CreateProcess建立一個子進程時,他將繼承父進程中全部可繼承的打開的句柄,可是沒法分辨哪個是管道讀句柄,哪個是管道寫句柄,能夠設置子進程的STARTUPINFO句柄的hStdInput和hStdOutput句柄來標示,特別注意的是CreateProcess一個子進程之後(建立一個新進程時,系統會爲該進程創建一個進程內核對象和一個線程內核對象,而內核對象的使用都會有個計數,建立後計數值自動加一),若是不須要這些內核對象,老是調用CloseHandle關閉內核對象,防止計數不許。函數
三、匿名管道模式屬於同步阻塞模式。連續讀取的時候會阻塞,一直等到管道里有數據。spa