關於window匿名信道的使用以及所遇到的問題

2022-06-14 15:33:08 字數 1065 閱讀 7407

學習windows通道時,用他去完成自己的cmd小工具時遇到了一些問題總結一下。

關於startupinfo結構:因為為了在cmd程式中通過通道與我們的程式互動,我們需要把cmd的輸入輸出變為匿名信道的輸入輸出。這就需要改變startupinfo結構。

注意在把輸入輸出控制代碼改變時不要忘記改變startupinfo.dwflags = start_usestdhandles,意思是使輸入輸出控制代碼能被更改。

因為為了讓cmd.exe能過使用管道,所以需要使在程式中建立的管道控制代碼能夠被子程序繼承,除了在createprocess使讓繼承控制代碼表開關開啟外,還需在建立管道時設定引數使其控制代碼能夠繼承。並且注意security_attributes結構要要進行初始化(我這裡設定的是static所以其會自動進行初始化)

因為在往 「自己的程式 -> cmd」 這條管道通過writefile寫資料,讓cmd通過readfile接受資料當作輸入的中間需要一定的時間,所以在writefile往管道入口輸入資料後需要sleep()等待一會,否則資料將會丟失。

對於管道而言用readfile()讀資料,如果沒有讀到資料則會處於阻塞狀態。readfile()不返回一直等到有資料可讀才返回。

以前在對edit控制項編輯框中的文字進行追加寫都是先將原文本讀出儲存起來,在與新文字連線之後在重新寫到文字編輯框中。(這樣做效率太低了)

在網上蒐以一下,發現可以用設定文字編輯游標到文字末,然後進行文字替換的方法。

window 匿名管通道程式設計

放個 片段方便我以後做事 security attributes sa handle hread,hwrite sa.nlength sizeof security attributes sa.lpsecuritydescriptor null 使用系統預設的安全描述符 sa.binherithan...

匿名管道 中的 單工通道(popen)

啟動shell和命令兩個程序,從命令程序中讀 寫檔案流。解決exec和system無返回輸出資料問題。方便使用系統自帶功能,並可以執行比較複雜的shell。預設啟動兩個程序,效率較低。file popen const char command,const char open mode 引數 comm...

關於window的檔案路徑

跟大家分享一下,初學者的坑。事情是這樣的,windows下讀取檔案路徑失敗,以下是簡單python with open f python file data python work text files filename.txt as file object contents file object...