C書き込み関数へのすべての呼び出しを含め、すべてのコンソール出力を自分のGUIコンソールにリダイレクトしたいと思います。
私が試したこと:
- 新しいストリームクラスを作成していますが、stdio.stdoutはファイルであり、ストリームを割り当てることはできません
- 新しいファイルクラスを完全に作成しますが、構造体を拡張することはできません
そのためにCバインディングを深く理解する必要がありますか?どんな助けでも大歓迎です。
この問題の典型的な解決策は多くの場所で説明されています。これは、Windowsでそれを行う方法を説明する古い記事です:http://edn.embarcadero.com/article/10387
どのUNIXでも同じように機能します。
要するに:
簡単な2番目のアプローチは、popen()
子プロセスを実行するたびに関数を使用することです。この標準関数は、上記のすべてを実行します。
別のパスを選択して、独自のwriteln関数を作成しました。どうやら私が使用しているライブラリはどれも端末出力を直接行わないので、パイプやファイルよりも面倒ではないようです。
簡単ですが、本当にハッキーな方法は、Cのfreopen()を使用してstdoutを一時ファイルにリダイレクトし、そのファイルをコンソールに読み込むことです。
オペレーティングシステムレベルでパイプにリダイレクトしてから、コンソールにパイプのもう一方の端でリッスンさせることができる場合があります。それはもっときれいになるでしょうが、もっと多くの苦痛です。
いずれにせよ、Dライブラリはあまり役に立たないと思います。ある種のCライブラリソリューションを使用することをお勧めします。