我想將所有控制檯輸出重定向到我自己的GUI控制檯,包括所有對C寫入函數的調用。D將stdout重定向到函數
事情我已經嘗試:
- 創建一個新的數據流類,但stdio.stdout是一個文件,你不能流分配給它
- 乾脆創建一個新的文件類,但你不能擴展一個結構
我是否需要深入探討C綁定?任何幫助非常感謝。
我想將所有控制檯輸出重定向到我自己的GUI控制檯,包括所有對C寫入函數的調用。D將stdout重定向到函數
事情我已經嘗試:
我是否需要深入探討C綁定?任何幫助非常感謝。
我選擇了另一條路徑,寫了我自己的writeln函數。由於顯然我沒有使用終端直接輸出的庫,它似乎不像管道或文件那樣麻煩。
一個簡單但卻很不好用的方法是使用C的freopen()將stdout重定向到一個臨時文件,然後爲您的控制檯讀取文件。
您可能可以在操作系統級別將其重定向到管道中,然後讓控制檯監聽管道的另一端。這會更清潔,但更多的痛苦。
無論哪種方式,我不認爲D庫會有很大幫助 - 你會想使用某種C庫解決方案。
在許多地方解釋了這個問題的典型解決方案。這篇文章解釋瞭如何在Windows上執行此操作:http://edn.embarcadero.com/article/10387
它在任何UNIX上的工作方式都是相同的。
簡而言之:
第二種方法更簡單,只要在運行某個子進程時簡單使用popen()
函數即可。這個標準功能可以完成以上所有功能。
這將工作,如果子進程是你的D應用程序。如果子應用程序是您自己的工作,那麼您可以使用某種形式的IPC將輸出發送到您的GUI。 – DejanLekic