ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- ストリーム構成の変更または照会
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 は相互に排他的なオプションです。
最上位ドライバよりも上位に位置する すべてのモジュールをストリーム上からポップする対象とします。このオプションは、必ず -p とともに指定してください。
ストリームの構成の変更内容を示す モジュールのリストを含んでいるファイルを filename で指定します。このファイルは、 1 行に 1 モジュール名という形式でなければなりません。 最上位のモジュール名を1 行目に、 ドライバに最も近いモジュール名を最終行に記述してください。strchg は、 ストリームの構成が最終的にこのファイルで指定した内容になるよう、モジュールのプッシュとポップを実行します。
push のニモニック。ストリームへモジュールをプッシュします。1 つ以上のプッシュ可能なストリームモジュールの名前を 引数として指定します。これらのモジュールは指定された順序でプッシュされます。つまり最初に module1、次に module2 というようにプッシュされます。
pop のニモニック。 ストリームからモジュールをポップします。-p だけを記述して strchg を実行すると、最上位のモジュールがポップされます。
module で示したモジュールよりも上位にあるすべてのモジュールをストリーム上からポップする対象とします。module 自体は対象とはなりません。このオプションは、必ず -p とともに指定してください。
以下に示すオプションは、 いずれも strconf コマンド用のもので、 -m と -t は相互に排他的です。
module で示したモジュールがストリーム上に存在しているかを調べます。存在していれば、 strconf は yes というメッセージを出力してゼロを返します。存在しなければ、no というメッセージを出力してゼロ以外の値を返します。この -m オプションは、 次の -t とは排他的です。
最上位モジュールが存在していればその名前を出力します。この -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) を参照してください。
|
strchg コマンドは、 実行に成功すれば ゼロを返します。エラーが発生すると、エラーメッセージを表示してゼロ以外の値を返します。起こりうるエラーとしては、使用方法の誤り、不当なモジュール名、プッシュ対象のモジュールが多すぎる、ストリーム上の ioctl の失敗、-f オプションで指定した filename がオープンできない、などが考えられます。
strconf コマンドも、実行に成功すればゼロを返します (ここで言う成功とは、-m オプション使用時には指定したモジュールが 存在していることを、また -t オプション使用時には最上位モジュールが存在していることを意味します)。-m または -t オプションが指定され、 該当するモジュールが存在しない場合、ゼロ以外の値を返します。また、使用方法の誤りやストリーム上の ioctl の失敗などのエラーが発生すると、エラーメッセージを表示してゼロ以外の値を返します。
スーパーユーザーでもなく、 ストリームの所有者でもないユーザーは、 strchg コマンドを実行することはできません。また、スーパーユーザーでもなく、 ストリームに対する読み取り権を持ってもいないユーザーは、 strconf コマンドを実行することはできません。
誤った順序でモジュールをプッシュしてしまうと、 ストリームが期待どおりに機能しなくなる恐れがあります。また、 tty のストリームで回線規約モジュールを誤った位置にプッシュしてしまうと、 端末がどのコマンドに対しても応答しなくなる恐れがあります。