WindowsのC++:たいのですがリダイレクトstderrにfprintf?
質問
私は包装、既存のC++コードから BSD プロジェクトに独自のカスタムラッパーとい統合までの当社のコードとして少しだけ変更します。このコードを使用 fprintf
印刷 stderr ためのログ/報告します。
たいへのリダイレクトはこれを代替の場所と同じです。月 Unix を行っていること socketpair
や thread
:一つのソケットが送ってもいい stderr 通話を dup2
の終了を監視スレッドができますし処理の出力に出力します。
この動作しない Windows ものでソケットは、同じファイルとしてます。
すべての書類はなんで、ウェブがどのようにリダイレクト出力から子プロセスではないんです。どのようにリダイレクトI stderr 同じ工程がコールバックの一時出力が書かれているか?(以前に言いますので、たって SetStdHandle
なにこの作業用)...
解決
ご利用できるので、同様の手法はWindowsする必要がありますが、すぐに別の言葉は同じ。:この記事: http://msdn.microsoft.com/en-us/library/ms682499.aspx 使用win32パイプ対応I/Oから別のプロセス、すぐったプロモーションとスレッド内の同じです。もちろん、お客様のすべての出力にstderrのどこからでもプロセスリダイレクトされおです。
実は、他のパズルする必要があ _fdopen や _open_osfhandle.実際、この関連例では、一部 コード 私発売年前:
DWORD CALLBACK DoDebugThread(void *)
{
AllocConsole();
SetConsoleTitle("Copilot Debugger");
// The following is a really disgusting hack to make stdin and stdout attach
// to the newly created console using the MSVC++ libraries. I hope other
// operating systems don't need this kind of kludge.. :)
stdout->_file = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
stdin->_file = _open_osfhandle((long)GetStdHandle(STD_INPUT_HANDLE), _O_TEXT);
debug();
stdout->_file = -1;
stdin->_file = -1;
FreeConsole();
CPU_run();
return 0;
}
この場合、イメージしたGUIプロセスが起動しないとstdio取り扱う。でコンソール、shovesの権の取扱にstdoutおよびstdinのdebug()機能(たとして設計されstdioインタラクティブ機能)できると、新しく作成されます。対応することができるでしょうがパイプと同じようなものにリダイレクトstderr.
他のヒント
ごうひとつ忘れてはいけないのかMSVCRTの"OSの取り扱いWin32取り扱うが、もう一層の取り扱追加を混乱させます。MSVCRTを見習Unixの取扱い番号を stdin
= 0, stdout
= 1, stderr
=2です。Win32取り扱うには、番号が付けられ異なるとその値は常に起こる複数の4.のパイプは、全ての取扱に関して適切に設定されます必要と手汚.のMSVCRTソースコードとデバッガであろう。
いままでいることを利用したい、とい名前付きパイプのためのイベントに関するご案内あるんじゃないでしょうか分poiningるドキュメンテーションに CreatePipe() 国 "匿名のパイプを活用して実施され、名前付きパイプと、固有の名前を付けます。することができますが、しばしばパスハンドルを匿名のパイプ機能を必要とする取扱いにおいて、"名前付きパイプ." でもたらされたと考えられるこれだけ書を作成する機能は同様のパイプの正しい設定のための非同期です。私が利用ガイドを文字列として(発生 CoCreateGUID()
や StringFromIID()
を与えてくれるものでありさえする独自の名称を作成して、サーバーおよびクライアントの名前付きパイプを正しく設定が重なったI/Oの詳細は、このコードはこちら http://www.lenholgate.com/blog/2008/02/process-management-using-jobs-on-windows.html).
回ってい線のあるコードしていま読み込むファイルを重ねI/O I/Oポート終了を、それだけで非同期通知のデータまでに到着...しかし、私には相当の試験ライブラリコードがあるのでな...
あるんじゃないでしょうかを設定可能で、名前付きパイプおよびそのわずかな重なりを読ンテカルロシミュレーションにお OVERLAPPED
構造にチェックイベントがデータをご用意して---な場所だとは思いませんでしたテンプレートをグルーピングとなるものです。