HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
グループ・データベースのエントリを取得します。
#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 が設定されている場合,エラーが発生しています。
名前に対応するグループ・データベース・エントリを取得します。
#include <types.h>#include <grp.h>
int getgrnam_r (const char *name, struct group *grp, char *buffer, size_t bufsize, struct group **result);
name
グループ・データベース・エントリを取り出すグループのグループ名。grp
取り出した group構造体を保持する記憶域。buffer
データベース内の最長のグループ・エントリを保持できる作業バッファ。bufsize
buffer の長さ (文字数)。result
成功して戻った場合, result は取り出した group構造体を指します。失敗して戻った場合, result には NULL が設定されます。
getgrnam_r関数は, grp が指す group構造体をアップデートし, result が指すメモリ位置に,この構造体へのポインタを格納します。この構造体には, name が一致したグループ・データベースのエントリが格納されています。 group構造体から指す記憶域は, buffer 引数のメモリ (サイズは bufsize 文字) から割り当てられます。このバッファに必要なサイズは, sysconf関数の _SC_GETGR_R_SIZE_MAX パラメータで調べることができます。エラーの場合,または要求されたエントリが見つからない場合は, result が指すメモリ位置に,NULL ポインタが返されます。
0 成功を示します。 x エラーの場合,この関数は以下のいずれかの値を戻り値として設定します。
- EACCES -- ユーザ・プロセスが,ユーザ登録ファイルにアクセスするための適切な特権を持っていません。
- EIO -- 入出力エラーが発生しました。
- EINTR -- getgrnam の実行中にシグナルをキャッチしました。
- EMFILE -- 呼び出し元プロセス内で, OPEN_MAX 個のファイル記述子が現在オープンされています。
- ENFILE -- 許されている最大個数のファイルが,現在システム内でオープンされています。
- ERANGE -- buffer 引数と bufsize 引数で指定された記憶域は,得られた group 構造体から指すデータを格納するには不十分です。
呼び出しプロセスの現在の補助グループ ID リストを取得します。
#include <unistd.h>int getgroups (int gidsetsize, gid_t grouplist[]);
gidsetsize
grouplist パラメータの指す配列に格納可能な,最大エントリ数。grouplist
取得した補助グループ ID の格納先となる配列。 getgroups関数から呼び出しプロセスの実効グループ ID が返されるのは,その実効グループ ID が呼び出しプロセスの補助グループ ID にもなっている場合だけです。
getgroups関数は,呼び出しプロセスの現在の補助グループ ID リストを取得します。このリストは, grouplist パラメータが指している配列に格納して返されます。 gidsetsize パラメータは,この配列に格納できるエントリの数を示します。getgroups関数が返す ID の数は, sysconfパラメータ _SC_NGROUPS_MAX で指定されている値以下です。
getgidと setsidも参照してください。
n 成功したことを示します。 n は,grouplist パラメータが指す配列に格納して返されたエレメントの数です。 - 1 失敗したことを示します。 errno には,次のいずれかの値が設定されます。
- EFAULT --- gidsetsize パラメータと grouplist パラメータで指定した配列の一部または全体が,そのプロセスに割り当てられているアドレス空間に収まっていませんでした。
- EINVAL --- gidsetsize パラメータの値はゼロでありませんでしたが,補助グループ ID の数より小さい値でした。
インターバル・タイマの値を返します。
#include <time.h>int getitimer (int which, struct itimerval *value);
which
インターバル・タイマの種類。 HP C RTL では ITIMER_REAL だけがサポートされます。value
itimerval構造体を指すポインタ。この構造体のメンバはタイマのインターバルおよびインターバルが終了するまでの時間を指定します。
getitimer関数は,value によって示される構造体の which 引数によって指定されるタイマの現在の値を返します。
struct itimerval { struct timeval it_interval; struct timeval it_value; };
次の表は itimerval構造体のメンバの値を示しています。
itimerval メンバの値 意味 it_interval = 0 it_value が 0 以外の値であるものとして,タイマが次に満了した後,タイマを無効にする。 it_interval = 0 以外の値 タイマの満了時に it_value の再ロードで使用する値を指定する。 it_value = 0 タイマを無効にする。 it_value = 0 以外の値 タイマが次に満了するまでの時間を示す。
システム・クロックの分解能より小さい時間値は,この分解能になるように切り上げられます。
HP C RTL は各プロセスに 1 つのインターバル・タイマを提供します。このタイマは <time.h>ヘッダ・ファイルに ITIMER_REAL として定義されています。このタイマはリアルタイムで減分され,タイマの満了時に SIGALRM シグナルを配布します。
0 正常終了を示します。 - 1 エラーを示します。 errno は EINVAL に設定されます ( value 引数に取り扱うことができない大きな時間値が指定されました)。
ログイン名を取得します。
#include <unistd.h>char *getlogin (void);
int *getlogin_r (char *name, size_t namesize);
getlogin関数は,現在のセッションに関連付けられているユーザのログイン名を返します。同じユーザ ID にログイン名が複数個あっても, getloginからポインタを通して返されるログイン名は,そのユーザがログインしたときに使用したログイン名です。ただし,このことがいえるのは,返されたポインタの値が NULL でない場合だけです。getlogin_r関数は, getloginのリエントラント版です。処理に成功すると, getlogin_rは,ログイン動作によってその呼び出しプロセスの制御端末に関連づけられている名前を name が指す文字配列に置いて,戻り値 0 を返します。この配列は長さが namesize 文字ですが,その長さには,名前と終了文字 (NULL) を格納できるだけの余裕が必要です。ログイン名の最長サイズは,LOGIN_NAME_MAX です。
同じユーザ ID にログイン名が複数個ある場合に getlogin_rを実行して成功すると,name の指す場所に,そのユーザがログインで使用した名前が格納されて返されます。
x getlogin が成功したことを示します。 getlogin は,静的バッファに null で終了する文字列,つまりログイン名を置いて,そのバッファを指すポインタを返します。 0 getlogin_r が成功したことを示します。 NULL エラーが発生したことを示します。 errno が設定されます。
| 前へ | 次へ | 目次 | 索引 |