HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
POSIX ID が無効に設定されている場合は,この関数は getgidと同じであり,ユーザ識別コード (UIC) からグループ番号を返します。POSIX ID が有効に設定されている場合は,この関数は呼び出し元プロセスの実効グループ ID を返します。
#include <unistd.h>gid_t getegid (void);
getegid関数は POSIX 形式の識別子 (ID) または UIC ベースの識別子に対して使用できます。
POSIX 形式の ID は, OpenVMS バージョン 7.3-2 およびそれ以降でサポートされています。
POSIX 形式の ID が無効に設定されている場合, getegid関数と getgid関数は同じであり,現在の UIC からグループ番号を返します。たとえば,UIC が [313,031] の場合は,313 がグループ番号です。
POSIX 形式の ID が有効に設定されている場合, getegidは呼び出しプロセスの実効グループ ID を返し, getgidは呼び出しプロセスの実グループ ID を返します。実グループ ID はログイン時に指定されます。実効グループ ID はより一時的なものであり, set-group-ID プロセスの実行時に追加のアクセス許可を決定します。 getgid関数が最も役立つのはこのようなプロセスです。
getegid関数は,必ず成功します。エラーを示すために予約されている戻り値はありません。
POSIX 形式の ID を有効または無効にする方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.7 節を参照してください。
geteuidおよび getuidも参照してください。
x 実効グループ ID (POSIX ID が有効に設定されている場合 ),または UIC から取り出したグループ番号 (POSIX ID が無効に設定されている場合)。
現在のプロセスの環境配列を検索し,指定された環境名に関連付けられている値を返します。
#include <stdlib.h>char *getenv (const char *name);
name
次の値のいずれか。
- HOME --- ユーザのログイン・ディレクトリ
- TERM --- 使用している端末の種類
- PATH --- デフォルトのデバイスとディレクトリ
- USER --- プロセスを開始したユーザの名前
- 論理名またはコマンド言語インタプリタ (CLI) シンボル名
- setenvまたは putenvで設定された環境変数
指定する name の大文字と小文字の区別は重要です。
特定の状況では, getenv関数はユーザ指定引数に対して論理名変換を実行しようとします。
- getenvに対する引数が環境配列内の環境文字列のいずれとも一致しない場合は, getenvはファイル処理の場合と同様に, LNM$FILE_DEV 論理名によって示される論理名テーブルを検索することにより,引数を論理名として変換しようとします。
getenvはまず,大文字と小文字を区別した検索を実行します。その検索が失敗すると,大文字と小文字を区別しない検索を実行します。ほとんどの場合,論理名は大文字で定義されていますが, getenvは小文字を含む論理名も検索することができます。
getenvは繰り返しの論理名変換を実行しません。- 論理名が複数の同値を含む検索リストの場合,返される値は最初の同値を指します。次の例を参照してください。
$ DEFINE A B,C ptr = getenv("A");
Aは " B" を指すポインタを返します。- 論理名が存在しない場合, getenvは引数文字列を CLI シンボルとして変換しようとします。この処理が正しく行われると,変換されたシンボル・テキストが返されます。この処理に失敗すると,戻り値は NULL になります。
getenvは繰り返しの CLI 変換を実行しません。
CLI が DEC/Shell の場合は, Shell 環境シンボルは DCL シンボルとしてインプリメントされているため,関数は論理名変換を実行しません。
注意
OpenVMS バージョン 7.1 では, OpenVMS 環境変数 ( つまり論理名と DCL シンボル ) のキャッシュが getenv関数に追加され,論理名の変換や, DCL シンボルの値の取得のためにライブラリが呼び出しを繰り返すのを回避するようになりました。デフォルト設定では,キャッシュは無効に設定されています。アプリケーションで,実行中に発生する可能性のある OpenVMS 環境変数の変化を追跡する必要がない場合は,アプリケーションを起動する前に DECC$ENABLE_GETENV_CACHE 論理名 (同値文字列) を設定することにより,キャッシュを有効にすることができます。
x 変換後のシンボルを格納した配列を指すポインタ。インデックス 0 に同値名が返されます。 NULL 変換が失敗したことを示します。
POSIX ID が無効に設定されている場合,この関数は getuidと同じであり,ユーザ識別コード (UIC) からメンバ番号 (OpenVMS の用語) を返します。POSIX ID が有効に設定されている場合は,この関数は実効ユーザ ID を返します。
#include <unistd.h>uid_t geteuid (void);
geteuid関数は POSIX 形式の識別子 (ID) または UIC ベースの識別子に対して使用できます。POSIX 形式の ID は, OpenVMS バージョン 7.3-2 およびそれ以降でサポートされています。
POSIX 形式の ID が無効に設定されている場合 (デフォルト), geteuid関数と getuid関数は同じであり,次に示すように現在の UIC からメンバ番号を返します。
- _VMS_V6_SOURCE 機能テスト・マクロを設定してコンパイルされたプログラムや, <unistd.h>ヘッダ・ファイルを取り込まないプログラムの場合, getuid関数と geteuid関数は OpenVMS UIC のメンバ番号を返します。たとえば,UIC が [313,31] の場合,メンバ番号 31 が返されます。
- _VMS_V6_SOURCE 機能テスト・マクロを設定せずにコンパイルされ, <unistd.h>ヘッダ・ファイルを取り込むプログラムの場合は,完全な UIC が返されます。たとえば,UIC が [313, 31] の場合は,20512799 (31 + 313 * 65536) が返されます。
POSIX 形式の ID が有効に設定されている場合, geteuidは呼び出しプロセスの実効ユーザ ID を返し, getuidは呼び出しプロセスの実ユーザ ID を返します。
POSIX 形式の ID を有効または無効にする方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.7 節を参照してください。
getegidおよび getgidも参照してください。
x 実効ユーザ ID (POSIX ID が有効に設定されている場合),または現在の UIC から取り出したメンバ番号または完全な UIC (POSIX ID が無効に設定されている場合)。
POSIX ID が無効に設定されている場合,この関数は getegidと同じであり,ユーザ識別コード (UIC) からグループ番号を返します。POSIX ID が有効に設定されている場合は,この関数は実グループ ID を返します。
#include <unistd.h>gid_t getgid (void);
getgid関数は POSIX 形式の識別子または UIC ベースの識別子に対して使用できます。POSIX 形式の ID は, OpenVMS バージョン 7.3-2 およびそれ以降でサポートされています。
POSIX 形式の ID が無効に設定されている場合 ( デフォルト ), getegid関数と getgid関数は同じであり,現在の UIC からグループ番号を返します。たとえば,UIC が [313,031] の場合,313 がグループ番号です。
POSIX 形式の ID が有効に設定されている場合, getegidは呼び出しプロセスの実効グループ ID を返し, getgidは呼び出しプロセスの実グループ ID を返します。実グループ ID はログイン時に指定されます。実効グループ ID はより一時的なものであり, set-group-ID プロセスの実行時に追加のアクセス許可を決定します。 getgid関数が最も役立つのはこのようなプロセスです。
POSIX 形式の ID を有効または無効にする方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.7 節を参照してください。
geteuidおよび getuidも参照してください。
x 実グループ ID (POSIX ID が有効に設定されている場合),または現在の UIC から取り出したグループ番号 (POSIX ID が無効に設定されている場合)。
グループ・データベースのエントリを取得します。
#include <grp.h>struct group *getgrent (void);
getgrent関数は,順次検索における次のグループを返します。グループ・データベース内のエントリから取り出したフィールドが格納された構造体へのポインタが返されます。最初に呼び出されたとき, getgrentは,グループ・データベース内の 1 番目のエントリが格納された group構造体へのポインタを返します。それ以後は,グループ・データベース内の次の group構造体へのポインタを返します。このため,連続して呼び出すことで,データベース全体を検索できます。
読み取り時に,ファイルの終端またはエラーが検出された場合, getgrentは NULL ポインタを返し, errnoを設定します。
x 成功した場合, group 構造体へのポインタです。 NULL エラーが発生したことを示します。この関数は, errno に以下のいずれかの値を設定します。
- EACCES -- ユーザ・プロセスが,ユーザ登録ファイルにアクセスするための適切な特権を持っていません。
- EINTR -- 操作中に,シグナルをキャッチしました。
- EIO -- 入出力エラーが発生したことを示します。
- EMFILE -- 呼び出し元プロセス内で, OPEN_MAX 個のファイル記述子が現在オープンされています。
- ENFILE -- 許されている最大個数のファイルが,現在システム内でオープンされています。
グループ ID に対応するグループ・データベース・エントリを取得します。
#include <types.h>#include <grp.h>
struct group *getgrgid (gid_t gid);
gid
グループ・データベース・エントリを取り出すグループのグループ ID。
getgrgid関数は,グループ・データベースで gid が一致するエントリを検索します。そして,一致するエントリが格納された group構造体へのポインタを返します。
x 一致するエントリが格納された,有効な group 構造体へのポインタです。 NULL エラーが発生しました。 注意: 戻り値は,以後の getgrent , getgrgid ,または getgrnam の呼び出しで上書きされる静的領域を指しています。
エラーが発生すると,この関数は, errno に以下のいずれかの値を設定します。
- EACCES -- ユーザ・プロセスが,ユーザ登録ファイルにアクセスするための適切な特権を持っていません。
- EIO -- 入出力エラーが発生しました。
- EINTR -- getgrgid の実行中にシグナルをキャッチしました。
- EMFILE -- 呼び出し元プロセス内で, OPEN_MAX 個のファイル記述子が現在オープンされています。
- ENFILE -- 許されている最大個数のファイルが,現在システム内でオープンされています。
エラー状態をチェックするアプリケーションは, getgrgid を呼び出す前に, errno に 0 を設定する必要があります。戻り時に errno が設定されている場合,エラーが発生しています。
グループ ID に対応するグループ・データベース・エントリを取得します。
#include <types.h>#include <grp.h>
int getgrgid_r (gid_t gid, struct group *grp, char *buffer, size_t bufsize, struct group **result);
gid
グループ・データベース・エントリを取り出すグループのグループ ID。grp
取り出した group構造体を保持する記憶域。buffer
データベース内の最長のグループ・エントリを保持できる作業バッファ。bufsize
buffer の長さ (文字数)。result
成功して戻った場合, result は取り出した group構造体を指します。失敗して戻った場合, result には NULL が設定されます。
getgrgid_r関数は, grp が指す group構造体をアップデートし, result が指すメモリ位置に,この構造体へのポインタを格納します。この構造体には, gid が一致したグループ・データベースのエントリが格納されています。 group構造体から指す記憶域は, buffer 引数のメモリ (サイズは bufsize 文字) から割り当てられます。このバッファに必要なサイズは, sysconf関数の _SC_GETGR_R_SIZE_MAX パラメータで調べることができます。エラーの場合,または要求されたエントリが見つからない場合は, result が指すメモリ位置に,NULL ポインタが返されます。
0 成功を示します。 x エラーの場合,この関数は以下のいずれかの値を戻り値として設定します。
- EACCES -- ユーザ・プロセスが,ユーザ登録ファイルにアクセスするための適切な特権を持っていません。
- EIO -- 入出力エラーが発生しました。
- EINTR -- getgrgid の実行中にシグナルをキャッチしました。
- EMFILE -- 呼び出し元プロセス内で, OPEN_MAX 個のファイル記述子が現在オープンされています。
- ENFILE -- 許されている最大個数のファイルが,現在システム内でオープンされています。
- ERANGE -- buffer 引数と bufsize 引数で指定された記憶域は,得られた group 構造体から指すデータを格納するには不十分です。
名前に対応するグループ・データベース・エントリを取得します。
#include <types.h>#include <grp.h>
struct group *getgrnam (const char *name);
name
グループ・データベース・エントリを取り出すグループのグループ名。
getgrnam関数は,グループ・データベースで name が一致するエントリを検索します。そして,一致したエントリが格納された group構造体へのポインタを返します。
x 一致したエントリが格納された,有効な group 構造体へのポインタです。 NULL エラーを示します。 注意: 戻り値は,以後の getgrent , getgrgid ,または getgrnam の呼び出しで上書きされる静的領域を指しています。
エラーが発生すると,この関数は, errno に以下のいずれかの値を設定します。
- EACCES -- ユーザ・プロセスが,ユーザ登録ファイルにアクセスするための適切な特権を持っていません。
- EIO -- 入出力エラーが発生しました。
- EINTR -- getgrnam の実行中にシグナルをキャッチしました。
- EMFILE -- 呼び出し元プロセス内で, OPEN_MAX 個のファイル記述子が現在オープンされています。
- ENFILE -- 許されている最大個数のファイルが,現在システム内でオープンされています。
エラー状態をチェックするアプリケーションは, getgrnam を呼び出す前に, errno に 0 を設定する必要があります。戻り時に errno が設定されている場合,エラーが発生しています。
| 前へ | 次へ | 目次 | 索引 |