マニュアルページセク ション 1: ユーザーコマンド

印刷ビューの終了

更新: 2014 年 7 月
 
 

strchg(1)

名前

strchg, strconf - ストリーム構成の変更または照会

形式

strchg -h module1 [, module2...]
strchg -p [-a | -u module]
strchg -f filename
strconf [-m | -t module]

説明

これらのコマンドは、 ユーザーの標準入力に対応するストリームの構成を 変更または照会するために使用されます。strchg コマンドは、 ストリーム上へモジュールをプッシュ、 もしくはストリームからモジュールをポップします。strconf コマンドは、 ストリームの構成を問い合わせます。ストリームの構成を変更できるのは、 スーパーユーザーおよび対応する STREAMSデバイスの所有者だけです。

strconf を引数なしで実行した場合、 ストリーム上の全モジュール名と 最上位のドライバ名のリストが返されます。出力リストは 1 行に 1 つの名前の形式で、 もしストリーム上に最上位モジュールが存在していれば 先頭にその名前が置かれています。 最後の項目はドライバ名となります。

オプション

次に示すオプションは、いずれも strchg コマンド用のものです。なお –h、 –f、–p は相互に排他的なオプションです。

–a

最上位ドライバよりも上位に位置する すべてのモジュールをストリーム上からポップする対象とします。このオプションは、必ず –p とともに指定してください。

–f filename

ストリームの構成の変更内容を示す モジュールのリストを含んでいるファイルを filename で指定します。このファイルは、 1 行に 1 モジュール名という形式でなければなりません。 最上位のモジュール名を1 行目に、 ドライバに最も近いモジュール名を最終行に記述してください。strchg は、 ストリームの構成が最終的にこのファイルで指定した内容になるよう、モジュールのプッシュとポップを実行します。

–h module1 [ , module2. . . ]

push のニモニック。ストリームへモジュールをプッシュします。1 つ以上のプッシュ可能なストリームモジュールの名前を 引数として指定します。これらのモジュールは指定された順序でプッシュされます。つまり最初に module1、次に module2 というようにプッシュされます。

–p

pop のニモニック。 ストリームからモジュールをポップします。–p だけを記述して strchg を実行すると、最上位のモジュールがポップされます。

–u module

module で示したモジュールよりも上位にあるすべてのモジュールをストリーム上からポップする対象とします。module 自体は対象とはなりません。このオプションは、必ず –p とともに指定してください。

以下に示すオプションは、 いずれも strconf コマンド用のもので、 –m と –t は相互に排他的です。

–m module

module で示したモジュールがストリーム上に存在しているかを調べます。存在していれば、 strconf は yes というメッセージを出力してゼロを返します。存在しなければ、no というメッセージを出力してゼロ以外の値を返します。この –m オプションは、 次の –t とは排他的です。

–t module

最上位モジュールが存在していればその名前を出力します。この –m オプションは、 次の –t とは排他的です。

例

使用例 1 strchg コマンドの例

次の例は、 ユーザーの標準入力に対応するストリーム上に ldterm という名のモジュールをプッシュするものです。

example% strchg -h ldterm

次の例は、 /dev/term/24 に対応するストリームから 最上位モジュールをポップするものです。このコマンドを発行するユーザーは、 当該デバイスの所有者もしくは スーパーユーザーでなければなりません。

example% strchg -p < /dev/term/24

次は、 以下のような内容を含む fileconf というファイルがあるとした場合の例で、

ttcompat
ldterm
ptem

次のコマンドを実行すると、

example% strchg -f fileconf

ユーザーの標準入力ストリームを構成し、結果として ptem がドライバの上にプッシュされ、その次に ldterm が置かれ、ttcompat がストリームの先頭にもっとも近い位置に置かれます。

引数なしの strconf コマンドは、ストリーム上の全モジュールと最上位のドライバのリストを出力します。たとえばストリームの現在の内容が、ドライバ zs の上にモジュール ldterm がプッシュされているだけの状態の場合、引数なしで strconf コマンドを実行すると次のような出力が得られます。

ldterm
zs

この内容のストリームに対して、次のコマンドは、ldterm がストリーム上に存在しているかを問い合わせます。

example% strconf -m ldterm

このコマンドは以下のメッセージを出力し、 終了コード 0 を返して実行が終了します。

yes

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
system/core-os

関連項目

attributes(5), streamio(7I)

診断

strchg コマンドは、 実行に成功すれば ゼロを返します。エラーが発生すると、エラーメッセージを表示してゼロ以外の値を返します。起こりうるエラーとしては、使用方法の誤り、不当なモジュール名、プッシュ対象のモジュールが多すぎる、ストリーム上の ioctl の失敗、–f オプションで指定した filename がオープンできない、などが考えられます。

strconf コマンドも、実行に成功すればゼロを返します (ここで言う成功とは、–m オプション使用時には指定したモジュールが 存在していることを、また –t オプション使用時には最上位モジュールが存在していることを意味します)。–m または –t オプションが指定され、 該当するモジュールが存在しない場合、ゼロ以外の値を返します。また、使用方法の誤りやストリーム上の ioctl の失敗などのエラーが発生すると、エラーメッセージを表示してゼロ以外の値を返します。

注

スーパーユーザーでもなく、 ストリームの所有者でもないユーザーは、 strchg コマンドを実行することはできません。また、スーパーユーザーでもなく、 ストリームに対する読み取り権を持ってもいないユーザーは、 strconf コマンドを実行することはできません。

誤った順序でモジュールをプッシュしてしまうと、 ストリームが期待どおりに機能しなくなる恐れがあります。また、 tty のストリームで回線規約モジュールを誤った位置にプッシュしてしまうと、 端末がどのコマンドに対しても応答しなくなる恐れがあります。