▼しゃさん
>「ツール」の「外部コマンド実行」で、「標準出力を得る」を
>チェックして実行しますが、
>アプリケーションで、Sleep()のが入ったアプリケーションの
>標準出力が得られません。
>
>例えば、
>for ( int i = 0 ; i < 20 ; i++ )
> printf("test %d\n", i);
>
>のようなアプリケーションを実行するとOKですが、
>for ( int i = 0 ; i < 20 ; i++ ){
> printf("test %d\n", i);
> Sleep(1000);
>}
>ではダメです。
どちらの場合も、私の環境ではアプリケーションが終了されてからしっかり表示されます。
これは、stdoutがバッファリングされているためです。
即座に表示したい場合は、バッファリングをやめるか、下記のようにfflushすれば即座に表示されます。
#こんな風にfflushを使っていいのか実は知らないんですけど(^_^;
>for ( int i = 0 ; i < 20 ; i++ ){
> printf("test %d\n", i);
fflush( stdout );
> Sleep(1000);
>}
以下、余談です。気にしないでください。
Win32のハンドル側でバッファリングさせない・可変長にする方法がわからないです。知ってる方が改良してくれるとありがたいです。
そういえば、CRLFがCRとLFに分断されて出力されます。(サクラのバグ)
さらに、GUIアプリケーションでも非表示のまま実行はひどい。
GUIアプリケーションの標準出力を捕まえられるから、printfを使ったデバッガとして使えるのに...
と思って表示するようにしてみたら、即座に表示されないから、使いにくい。