HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
名前に対応するグループ・データベース・エントリを取得します。
#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 構造体から指すデータを格納するには不十分です。
インターバル・タイマの値を返します。
#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);
getlogin関数は,現在のセッションに関連付けられているユーザのログイン名を返します。
x 静的バッファ内のヌル区切り文字列を指すポインタ。 NULL エラーを示します。ログイン名は設定されていません。
ファイル記述子に関連付けられているファイル指定を返します。
#include <unixio.h>関数バリアント getname関数には, _getname32および _getname64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *getname (int file_desc, char *buffer, ...);
file_desc
ファイル記述子。buffer
ファイル指定を格納できるだけの十分な大きさの文字列を指すポインタ。...
省略可能な引数であり,1 または 0 に設定できます。1 を指定した場合は, getname関数は OpenVMS 形式でファイル指定を返します。 0 を指定した場合は,UNIX 形式でファイル指定を返します。この引数を省略すると,現在のコマンド言語インタプリタ (CLI) に従ってファイル名を返します。 UNIX 形式のファイル指定の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.4.3 項を参照してください。
getname関数は, buffer によって示される領域にファイル指定を格納し,そのアドレスを返します。buffer によって示される領域は,完全に修飾したファイル指定 ( 最大長は 256 文字 ) を格納できるだけの十分な大きさの配列でなければなりません。
x buffer 引数に渡されたアドレス。 0 エラーを示します。
UNIX コマンド・ラインの規則に従うアプリケーションで使用できるコマンド・ライン・パーサ。
#include <unistd.h> (X/Open, POSIX-1)#include <stdio.h> (X/Open, POSIX-2)
int getopt (int argc, char * const argv[], const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;
argc
mainに渡される引数の数。argv
mainに渡される引数配列。optstring
認識されるオプション文字で構成される文字列。文字の後にコロンが続く場合,そのオプションは引数を受け付けます。
変数 optindは,処理する argv ベクタの次の要素のインデックスです。この変数はシステムで 1 に初期化され, argv の各要素の処理が終了したきに, getoptによって更新されます。 argv の要素に複数のオプション文字が含まれている場合は, getoptがすでに処理されているオプションを判断する方法は不定になります。getopt関数は,argv のオプション文字のうち, optstring の文字と一致する次のオプション文字 ( そのような文字が見つかった場合 ) を返します。オプションが引数を受け付ける場合は, getoptは変数 optargを,次に示すようにオプション引数を指すポインタに設定します。
- オプションが argv の要素によって示される文字列内の最後の文字である場合は, optargには argv の次の要素が格納され, optindに 2 が加算されます。 optindの結果値が argc より小さくない場合は, getoptはエラーを返し,オプション引数が不足していることを示します。
- それ以外の場合, optargは, argv のその要素内のオプション文字の後の文字列を指し, optindに 1 を加算します。
次のいずれかの条件が満たされる場合, getoptは optindを変更せずに, - 1 を返します。
argv[ optind] が NULL ポインタである
*argv[ optind] が文字 -- でない
argv[ optind] が文字列 "--" を示しているargv[ optind] が文字列 "-- --" を指す場合, getoptは, optindを増分した後, - 1 を返します。
getoptが optstring に含まれていないオプション文字を検出すると,疑問符 (?) を返します。
getoptが不足している引数を検出した場合, optstring の 1 文字目がコロンのときは,コロン文字 (:) を返します。それ以外の場合は,疑問符を返します。
上記の 2 つの場合, getoptは変数 optoptを,エラーの原因となったオプション文字に設定します。アプリケーションで変数 opterrを 0 に設定しておらず, optstring の 1 文字目がコロンでない場合は, getoptは診断メッセージを stderrにプリントします。
x コマンド・ラインに指定した次のオプション文字。 getopt が不足している引数を検出し, optstring の 1 文字目がコロンの場合は,コロンを返します。
getopt が optstring にないオプション文字を検出した場合や,不足している引数を検出し, optstring の 1 文字目がコロンでない場合は,疑問符を返します。
- 1 すべてのコマンド・ライン・オプションが解析された場合。
次の例は,ユーティリティに対する引数の処理方法を示しています。このユーティリティは,同時に組み合わせて指定することができないオプション a と b,およびオプション f と o を受け付けることができ,この 2 つのオプションはいずれも引数を必要とします。
#include <unistd.h> int main (int argc, char *argv[ ]) { int c; int bflg, aflg, errflg; char *ifile; char *ofile; extern char *optarg; extern int optind, optopt; . . . while ((c = getopt(argc, argv, ":abf:o:")) != -1) { switch (c) { case 'a': if (bflg) errflg++; else aflg++; break; case 'b': if (aflg) errflg++; else { bflg++; bproc(); } break; case 'f': ifile = optarg; break; case 'o': ofile = optarg; break; case ':': /* -f or -o without operand */ fprintf (stderr, "Option -%c requires an operand\n"' optopt); errflg++; break; case '?': fprintf (stderr, "Unrecognized option -%c\n"' optopt); errflg++; } } if (errflg) { fprintf (stderr, "usage: ..."); exit(2); } for ( ; optind < argc; optind++) { if (access(argv[optind], R_OK)) { . . . }
このサンプル・コードは,同値文字列として次のいずれも受け付けます。
cmd -ao arg path path cmd -a -o arg path path cmd -o arg -a path path cmd -a -o arg -- path path cmd -a -oarg path path cmd -aoarg path path
システム・ページ・サイズを取得します。
#include <unistd.h>int getpagesize (void);
getpagesize関数は,ページ内のバイト数を返します。システム・ページ・サイズは,メモリ管理システム呼び出しに対する引数を指定するときに便利です。ページ・サイズはシステム・ページ・サイズであり,必ずしもハードウェア・ページ・サイズと同一ではありません。
x 常に正常終了を示します。ページ内のバイト数を返します。
プロセスに対応するプロセス・グループ ID を取得します。
#include <unistd.h>pid_t getpgid (pid_t pid);
pid
グループ ID を要求するプロセスのプロセス ID。
getpgid関数は, pid で指定されたプロセスのプロセス・グループ ID を返します。 pid が 0 の場合, getpgid関数は,呼び出し元プロセスのプロセス・グループ ID を返します。
x 指定されたプロセスのセッション・リーダのプロセス・グループ ID です。 (pid_t) - 1 エラーを示します。この関数は, errno に以下のいずれかの値を設定します。
- EPERM -- pid で指定されたプロセスが,呼び出し元プロセスと同じセッションに属していないため,この実装では,呼び出し元プロセスからこのプロセスのプロセス・グループ ID へのアクセスが許されていません。
- ESRCH -- プロセス ID が pid であるようなプロセスはありません。
- EINVAL -- pid の値が不正です。
呼び出し元プロセスのプロセス・グループ ID を取得します。
#include <unistd.h>pid_t getpgrp (void);
getpgrp関数は,呼び出し元プロセスのプロセス・グループ ID を返します。getpgrp関数は必ず成功します。エラーを示すために予約されている戻り値はありません。
x 呼び出し元プロセスのプロセス・グループ ID です。
現在のプロセスのプロセス ID を返します。
#include <unistd.h>pid_t getpid (void);
x 現在のプロセスのプロセス ID。
呼び出しプロセスの親プロセス ID を返します。
#include <unistd.h>pid_t getppid (void);
x 親プロセス ID。 0 呼び出しプロセスに親プロセスがないことを示します。
| 前へ | 次へ | 目次 | 索引 |