[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

23.5 stdbuf: 入出力ストリームのバッファリングを変更して、コマンドを実行する

stdbuf を使用すると、プログラムと結びついている 3 種類の標準入出力ストリームに対して、そのバッファリング動作を変更することができる。

書式:

 
stdbuf optioncommand

command は、次の条件を満たすプログラムの名前で始まっていなければならない。

  1. 入出力に ISO C FILE ストリームを使用している (注意: プログラム ddcat は、これを使用していない)。
  2. 自分で標準ストリームのバッファリングを調整していない (注意: プログラム tee は、この部類に入らない)。

後に続く引数があれば、command に引数として渡される。

このプログラムでは以下のオプションが使用できる。参照: 共通オプション.

-i mode
--input=mode

標準入力ストリームのバッファリングを調整する。

-o mode
--output=mode

標準出力ストリームのバッファリングを調整する。

-e mode
--error=mode

標準エラーストリームのバッファリングを調整する。

mode には、以下のものを指定できる。

L

ストリームを行単位のバッファ・モードにする。このモードでは、改行が出力されることになるか、 あるいは、端末デバイスに結びついているストリームから入力が読み込まれるまで、データを溜めておく。 このオプションは、標準入力に対しては無効である。

0

選択したストリームのバッファリングを無効にする。 このモードでは、データは即座に出力される。また、要求された量のデータしか入力から読み込まない。 入力と出力で動作が違うことに気をつけていただきたい。 なお、入力のバッファリングを無効にしても、ストリーム入力関数の応答性やブロッキング動作に影響することはない。 たとえば、fread は、要求した量より少ないデータを、下層で動いている read が返してきても、EOF が来るか、エラーが起きるまで、 やはりブロッキングを行うのである。

size

バッファ一杯モード (fully buffered mode) で使用するバッファのサイズを指定する。 size は、整数であり、 以下に挙げるような何倍かを示す接尾辞を後ろに付けることもできる。接尾辞だけ指定してもよい (訳注: その場合は、1 が前にあるものと見なされる)。

 
KB’ =>           1000 (KiloBytes)
‘K’  =>           1024 (KibiBytes)
‘MB’ =>      1000*1000 (MegaBytes)
‘M’  =>      1024*1024 (MebiBytes)
‘GB’ => 1000*1000*1000 (GigaBytes)
‘G’  => 1024*1024*1024 (GibiBytes)

T’, ‘P’, ‘E’, ‘Z’, ‘Y’ についても同様。

stdbuf がインストールされるのは、Executable and Linkable Format (ELF) を使用し、constructor アトリビュートをサポートしているプラットフォームだけである。 従って、移植を考慮したスクリプトでは、stdbuf が存在することを当てにしない方がよい。

終了ステータス:

 
125: stdbuf そのものの実行に失敗した。
126: command は見つかったが、起動できなかった。
127: command が見つからなかった。
それ以外は、command の終了ステータス。

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on June 7, 2022 using texi2html 1.82.