日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトルページ
目次
まえがき
第 1 章:はじめに
第 2 章:入出力について
第 3 章:文字/文字列/引数リスト関数
第 4 章:エラー処理とシグナル処理
第 5 章:サブプロセス関数
第 6 章:Curses画面管理関数とマクロ
第 7 章:算術関数
第 8 章:メモリ割り当て関数
第 9 章:システム関数
第 10 章:国際化ソフトウェアの開発
第 11 章:日付/時刻関数
第 12 章:シンボリックリンクとPOSIXパス名
付録 A:各OSバージョンでサポートする関数一覧
付録 B:非標準ヘッダに複製されているプロトタイプ
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (上巻)


目次 索引



RMS では,POSIX 仕様の絶対パス名にある先頭の ' /' を, UNIX スタイルのルートとして解釈する必要があります。 POSIX の仕様は,この POSIX ルートからすべてが始まるものとして決められています。 POSIX ルートは,GNV のインストール・プロシージャや,新しい DCL コマンド SET ROOT で設定できます。

12.5.1 POSIX ルートの推奨位置

システムに設定する POSIX ルートの位置を指定する場合は, GNV のインストール/構成プロシージャを実行しているときに指定するか,または,SET ROOT コマンドを使用して指定する必要があります。特に指定しないで GNV をインストールすると, SYS$SYSDEVICE:[PSX$ROOT] がルートの位置として設定されます。このディレクトリをルートとして受け入れてもかまいませんが,別のディレクトリを指定することもできます。 GNV では,ルートを設定した後,オプションで " /mnt" (POSIX ルート・ディレクトリにある " mnt" ディレクトリ) に,そのシステムに接続されている各ディスク・デバイスのマウント・ポイントを作成します。

ルートの位置としてデフォルトの値を受け入れるか,デフォルト以外の位置を指定してそのディレクトリがデバイスの最上位レベルにないと,ルート・ディレクトリ以下のディレクトリ・ツリーにないファイルは,そのファイルのあるディレクトリ・ツリーのルート・ディレクトリを含むデバイスを,マウント・ポイントを介してルートの下にマウントしない限り, POSIX パス名でアクセスできません。 (このマウント・ポイントは,GNV が構成中にオプションで作成します)。 図 12-1 を参照してください。

図 12-1 POSIX ルートの位置


         DKB0 -> 000000 
                   | 
             +-----+----------+                
             |                | 
          PSX$ROOT         other things 
             | 
            mnt 
             | 
       +----------+-----------+ 
       |          |           | 
     DKB1       DKB2        DKB0       
                              | 
                        +-----+----------+                
                        |                | 
                    PSX$ROOT         other things 

上記以外の方法としては,デバイスの最上位レベルにあるディレクトリ,つまり MFD (Master File Directory) をルートにして,そのデバイスに対してはマウント・ポイントを作成しないという方法もあります。この方法をとれば,デバイスにあるファイルはすべて,POSIX パス名でアクセスできます。ただし,デバイス (特にシステム・デバイス) の MFD をルートにすると,ユーザがルート・ディレクトリのファイルを表示したときに ("ls /" など),MFD にあるファイルがすべて見えてしまいます。つまり,GNV ユーザにとっては,予想もしなかった OpenVMS ファイルが見えてしまうということです。この事情は DCL ユーザにとっても同様で,やはり予想外の UNIX ファイルが見えてしまいます。デバイスの MFD は,大半の一般ユーザからはアクセスできないようにしておく必要があるので,それらが見えてしまうと,予期しない障害につながることがあります。

したがって,ルートとしてデフォルトのルート・ディレクトリを使用するようお勧めします。

マウント・ポイントについての詳細は, 第 12.7 節 を参照してください。

12.5.2 SET ROOT コマンド

このコマンドのフォーマットは,次のとおりです。

SET ROOT  デバイス名:ディレクトリ指定

SET ROOT は,POSIX ルートを定義するためのコマンドです。 POSIX パス名処理モードで動作している RMS と C ランタイム・ライブラリでは,パス名の先頭にある ' /' を,ルートを表す文字として扱います。特に指定しなければ,SYS$SYSDEVICE:[PSX$ROOT] がルートになります。

ルートの定義は,リブートすると無効になります。

SET ROOT コマンドでは,次の修飾子を指定できます。



/LOG (デフォルト)

/NOLOG

SET ROOT コマンドでルートの設定に成功したことを表示するかどうかを制御します。


SHOW ROOT は,システムのルートを表示するためのコマンドです。このコマンドは,プロセスのルートが定義されていれば,その現在の値も表示します。

このコマンドのフォーマットは,次のとおりです。

SHOW ROOT



12.6 現在の作業ディレクトリ

UNIX システムでは,先頭がスラッシュで始っていないパス名の解決に,現在の作業ディレクトリを使用します。

RMS でシンボリック・リンクに出会った場合は,そのシンボリック・リンクのあるディレクトリを現在の作業ディレクトリにして,パス名を解決します。

RMS に直接渡された POSIX パス名を解決する場合は,そのプロセスに現在割り当てられている OpenVMS のデフォルト・ディレクトリが,現在の作業ディレクトリになります。 OpenVMS のデフォルト・ディレクトリが複数個ある場合 (たとえば,ディレクトリの指定に検索リストが含まれている場合) は,検索リストを通して最初に見つかったディレクトリが,現在の作業ディレクトリになります。

12.7 マウント・ポイントの設定

ファイル・システムをマウント・ポイントにマウントしたり,マウント・ポイントからディスマウントしたりするためのユーティリティとして, mntumntという新しいユーティリティが 2 つ使用できるようになりました。ただし,ファイル・システムをマウントまたはディスマウントできるのは, CMKRNL 特権を持つユーザだけです。これらのユーティリティは,GNV の一部として出荷されています。

これらのユーティリティには,マウント・ポイントの論理名テーブルが専用に用意されていて,管理されています。現在利用可能なマウント・ポイントを表示するように要求すると,これらのユーティリティはこのテーブルを使用してそれらを表示します。

これらのユーティリティのインタフェースは,次のとおりです。

mnt
   既存のマウント・ポイントをリストにして表示します。

mnt file_system mount_point
   ファイル・システム file_system を,マウント・ポイント mount_point にマウントします。

umnt mount_point
   マウント・ポイント mount_point にマウントされているファイル・システムをアンマウントします。

umnt file_system
   ファイル・システム file_system を,マウント・ポイントからアンマウントします。

umnt -A
   ファイル・システムをすべて,マウント・ポイントからアンマウントします。

引数には,OpenVMS のファイル指定または POSIX パス名を指定できます。

12.8 NFS

V5.4 とそれより前の TCP/IP Services for OpenVMS でも, UNIX サーバと OpenVMS のセーブセットとの間でシンボリック・リンクのバックアップと復元を正しく行えるようにするために, NFS クライアントでシンボリック・リンクをサポートしていました。しかし,その機能は限られたものでした。そのサポートでは,クライアントがアプリケーション ACE を使用して,ファイルにそれがシンボリック・リンクであることを示すフラグを付けていました。 Version 5.5 になっても,ODS-2 のマウントについては,クライアントでこれと同じ動作が引き継がれています。しかし,ODS-5 のマウントについては,クライアントでアプリケーション ACE を検出したときにシンボリック・リンクが作成されるようになりました。このサポートによって,バージョンの古いクライアントで作成されたセーブセットでも,新しいバージョンで復元できるようになっています。

12.9 DCL

OpenVMS の DCL コマンドとユーティティは,シンボリック・リンクを検出すると,所定の動作を行うようになっています。つまり,シンボリック・リンクは,通常の処理として,そのリンク先までたどるようになっています。たとえば,シンボリック・リンク LINKFILE.TXT が TEXT.TXT を指している場合に "type LINKFILE.TXT" というコマンドを入力すると,そのリンクがたどられて,TEXT.TXT に含まれているテキストが表示されます。

また,シンボリック・リンクは,それ自身が直接指定されていなくても,たどられるようになっています。たとえば," dir [...]*.TXT" というコマンドを処理しているときに,ディレクトリを参照しているシンボリック・リンクが検出されると,その参照先ディレクトリ (およびそのサブディレクトリ) にある, " .TXT" というタイプのファイルがすべて表示されます (注意: OpenVMS Version 8.3 でもディレクトリのワイルドカードを処理しますが,そのときにシンボリック・リンクの参照先がディレクトリであるかどうかは調べません)。

しかし,シンボリック・リンクを常にたどらない方がよい場合もあります。また,シンボリック・リンクをたどるかどうかをユーザが指定できる方がよい場合もあります。

以下のコマンドには,シンボリック・リンクを決してたどらないものと,シンボリック・リンクをたどるかどうかを指定できるものがあります。

BACKUP
バックアップ操作でシンボリック・リンクが検出されると,そのシンボリック・リンク自体がコピーされます。この動作は,すべてのバックアップ・タイプ (物理,イメージ,およびファイル) に適用されます。

COPY
/SYMLINK /NOSYMLINK (デフォルト)
入力ファイルがシンボリック・リンクの場合,そのシンボリック・リンクから参照されているファイルがコピーされます。
/SYMLINK 修飾子を指定すると,入力したシンボリック・リンクがすべてコピーされます。

CREATE
/SYMLINK="text"
シンボリック・リンクが作成されて,そこに,指定されたテキストが引用符なしで含められます。
作成されたシンボリック・リンクがその後でファイル名の処理中に検出されると,そのシンボリック・リンクの内容が読み取られ, POSIX パス名が指定されているものとして処理されます。
バージョンの古いシンボリック・リンクと共存させることはできません。

DELETE
入力ファイルがシンボリック・リンクの場合,そのシンボリック・リンク自体が削除されます。

DIRECTORY
/SYMLINK (デフォルト) /NOSYMLINK
入力ファイルがシンボリック・リンクの場合,そのシンボリック・リンク自体のファイル属性が表示されます。ファイルの属性を表示するように要求すると,シンボリック・リンクの内容も表示されます。その際,ファイル名と内容の間に矢印が置かれます (たとえば,LINK.TXT -> FILE.TXT)。
ファイル指定としてシンボリック・リンクを入力するとともに /NOSYMLINK 修飾子を指定すると,そのシンボリック・リンクから参照されているファイルのファイル属性が表示されます。ただし,表示される名前は,シンボリック・リンク自体の名前のままです。

DUMP
/SYMLINK /NOSYMLINK (デフォルト)
入力ファイルがシンボリック・リンクの場合,シンボリック・リンクから参照されているファイルがダンプされます。
/SYMLINK 修飾子を指定すると,入力したシンボリック・リンクがすべてダンプされます。

PURGE
入力ファイルがシンボリック・リンクの場合,そのシンボリック・リンク自体がパージされます。存在できるシンボリック・リンクのバージョンは 1 つだけであるため,このコマンドを実行しても,そのファイルに対する影響はありません。

RENAME
変換元ファイルがシンボリック・リンクの場合,そのシンボリック・リンク自体の名前が変更されます。
変更先ファイルがシンボリック・リンクであれば,この操作は失敗します。

SET FILE
/SYMLINK /NOSYMLINK (デフォルト)
入力ファイルがシンボリック・リンクの場合,そのシンボリック・リンクから参照されているファイルが設定されます。
/SYMLINK 修飾子を指定すると,そのシンボリック・リンク自体が設定されます。

  注意

  • /EXCLUDE 修飾子を使用すれば,指定したシンボリック・リンクを対象から除外できます。除外されるシンボリック・リンクは,修飾子のファイル指定に一致したものです。シンボリック・リンクから参照されているファイルのファイル名は,その名前を指定しても除外されません。
    例:
    シンボリック・リンク LINK.TXT が,別のディレクトリにある TEXT.TXT を参照しているとします。
    /EXCLUDE=LINK.TXT と指定すると LINK.TXT が操作から除外されます (そのため,TEXT.TXT も除外されます)。

    /EXCLUDE=TEXT.TXT と指定すると, LINK.TXT も TEXT.TXT も操作から除外されません。

  • シンボリック・リンクを指定して F$FILE_ATTRIBUTES を実行すると,そのシンボリック・リンクから参照されているファイルが対象になります。これに対して,新しいレキシカル関数 F$SYMLINK_ATTRIBUTES の場合は,そのシンボリック・リンク自体の情報が返されます。また,新しいレキシカル関数 F$READLINK の場合は,入力ファイルがシンボリック・リンクであるとそのテキスト形式の内容が返され,入力ファイルがシンボリック・リンクでないと NULL が返されます。

  • 一部のコンパイラやユーティリティでは,入力ファイル指定,または修飾子に対する引数として,引用符で囲んだパス名を指定できます。このようなコンパイラやユーティリティには, C コンパイラ,C++ コンパイラ,CXXLINK,Linker,および Librarian があります。 Linker については,オプション・ファイルにも引用符で囲んだパス名を含めることができます。コンパイラの /INCLUDE_DIRECTORY 修飾子については,引用符で囲んだパス名ではなく,以前と同じ標準の POSIX パス名を指定できます。 Java コンパイラについても,以前と同じ標準の POSIX パス名を指定できます。また,SET DEFAULT の入力には,引用符で囲んだパス名を指定できます。



GNV は,OpenVMS システムで Open Group のユーティリティを使用できるようにするためのメカニズムです。 GNV はオープン・ソース・プロジェクトになっていて, Sourceforge の Web サイトでアップデートがリリースされています。 GNV は,OpenVMS Open Source CD から入手することもできます。

GNV は,そのファイル・アクセス機能を C RTL にすべて依存しているので,いっさい変更されていません。その理由は,提供されているユーティリティが, Open Group で定義されているシンボリック・リンクの仕様に従って動作するようにする必要があるからです。ユーザが新しいシンボリック・リンクと POSIX パス名のサポートを利用する場合は, BASH を起動する前に, C RTL の DECC$POSIX_COMPLIANT_PATHNAMES 機能論理名を適切に設定する必要があります。

12.11 制限事項

シンボリック・リンクのサポートには,次の制約があります。

  • シンボリック・リンクに対して SET FILE/REMOVE は実行できない。
    シンボリック・リンクを対象にして SET FILE/REMOVE を実行しても,そのシンボリック・リンクは削除されません。また,エラーも表示されません。

  • RMS とシンボリック・リンクに関するコーディング上の注意事項
    シンボリック・リンクと POSIX パス名の処理を導入すると,それに伴って,ファイル指定の中のデバイス名が,そのファイルの存在しているデバイスを正しく示さなくなってしまうことがあります。 SYS$PARSE/SYS$SEARCH から返される NAM$T_DVI を調べれば,そのファイルの存在しているデバイスを確認することができます。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.