5

Windows コマンド シェル cmd.exe でパイプを考慮する:

C:\>feed | filter

フィード プロセスからの標準出力は、フィード プロセスが完了するまで、フィルタリング プロセスの標準入力に到達しないようです。

このタイプの「バッファリング」は、長時間実行されているフィード プロセスの出力メッセージに迷惑な遅延を引き起こす可能性があります (初期の失敗で中断するには、「ctrl-c」を押したい場合があります)。

データが利用可能になるとすぐに、フィードプロセスからの標準出力がフィルタリングプロセスの標準入力に到達するように、これを回避する方法はありますか? (バッファリングなし)

たとえば、次の単純化された例:

フィード.バット:

@echo off
echo something
sleep 3
echo something else

フィルター.バット:

@echo off
for /F "tokens=*" %%a in ('more') do (
    echo _%%a
)

以下のコマンドは、3 秒後 (スリープが完了するまで) 何も表示しません。

C:\>feed | filter
_something
_something else

望ましい動作は、「_something」が出力され、その後 3 秒の遅延が続き、その後に「_something else」が出力されることです。

4

1 に答える 1