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


前へ 次へ 目次 索引



getgrent (Alpha only)

グループ・データベースのエントリを取得します。

形式

#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 -- 許されている最大個数のファイルが,現在システム内でオープンされています。


getgrgid (Alpha only)

グループ 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 が設定されている場合,エラーが発生しています。


getgrgid_r (Alpha only)

グループ 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 構造体から指すデータを格納するには不十分です。


getgrnam (Alpha only)

名前に対応するグループ・データベース・エントリを取得します。

形式

#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 が設定されている場合,エラーが発生しています。


getgrnam_r (Alpha only)

名前に対応するグループ・データベース・エントリを取得します。

形式

#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 構造体から指すデータを格納するには不十分です。


getitimer

インターバル・タイマの値を返します。

形式

#include <time.h>

int getitimer (int which, struct itimerval *value);


引数

which

インターバル・タイマの種類。 HP C RTL では ITIMER_REAL だけがサポートされます。

value

itimerval構造体を指すポインタ。この構造体のメンバはタイマのインターバルおよびインターバルが終了するまでの時間を指定します。

説明

getitimer関数は,value によって示される構造体の which 引数によって指定されるタイマの現在の値を返します。

タイマ値は itimerval構造体によって定義されます。


       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 引数に取り扱うことができない大きな時間値が指定されました)。


getlogin

ログイン名を取得します。

形式

#include <unistd.h>

char *getlogin (void);


説明

getlogin関数は,現在のセッションに関連付けられているユーザのログイン名を返します。

戻り値

x 静的バッファ内のヌル区切り文字列を指すポインタ。
NULL エラーを示します。ログイン名は設定されていません。


getname

ファイル記述子に関連付けられているファイル指定を返します。

形式

#include <unixio.h>

char *getname (int file_desc, char *buffer, ...);

関数バリアント getname関数には, _getname32および _getname64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。

引数

file_desc

ファイル記述子。

buffer

ファイル指定を格納できるだけの十分な大きさの文字列を指すポインタ。

...

省略可能な引数であり,1 または 0 に設定できます。1 を指定した場合は, getname関数は OpenVMS 形式でファイル指定を返します。 0 を指定した場合は,UNIX 形式でファイル指定を返します。この引数を省略すると,現在のコマンド言語インタプリタ (CLI) に従ってファイル名を返します。 UNIX 形式のファイル指定の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.4.3 項を参照してください。

説明

getname関数は, buffer によって示される領域にファイル指定を格納し,そのアドレスを返します。buffer によって示される領域は,完全に修飾したファイル指定 ( 最大長は 256 文字 ) を格納できるだけの十分な大きさの配列でなければなりません。

戻り値

x buffer 引数に渡されたアドレス。
0 エラーを示します。


getopt

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を,次に示すようにオプション引数を指すポインタに設定します。

次のいずれかの条件が満たされる場合, getoptoptindを変更せずに, - 1 を返します。

argv[ optind] が NULL ポインタである
*argv[ optind] が文字 -- でない
argv[ optind] が文字列 "--" を示している

argv[ optind] が文字列 "-- --" を指す場合, getoptは, optindを増分した後, - 1 を返します。

getoptoptstring に含まれていないオプション文字を検出すると,疑問符 (?) を返します。

getoptが不足している引数を検出した場合, optstring の 1 文字目がコロンのときは,コロン文字 (:) を返します。それ以外の場合は,疑問符を返します。

上記の 2 つの場合, getoptは変数 optoptを,エラーの原因となったオプション文字に設定します。アプリケーションで変数 opterrを 0 に設定しておらず, optstring の 1 文字目がコロンでない場合は, getoptは診断メッセージを stderrにプリントします。


戻り値

x コマンド・ラインに指定した次のオプション文字。

getopt が不足している引数を検出し, optstring の 1 文字目がコロンの場合は,コロンを返します。

getopt optstring にないオプション文字を検出した場合や,不足している引数を検出し, optstring の 1 文字目がコロンでない場合は,疑問符を返します。

- 1 すべてのコマンド・ライン・オプションが解析された場合。


次の例は,ユーティリティに対する引数の処理方法を示しています。このユーティリティは,同時に組み合わせて指定することができないオプション ab,およびオプション fo を受け付けることができ,この 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)) { 
         . 
         . 
         . 
} 


前へ 次へ 目次 索引