日本-日本語
≫日本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 ランタイム・ライブラリ・リファレンス・マニュアル (上巻)


目次 索引

第 9 章
システム関数

オペレーティング・システムの開発には,C プログラミング言語が適しています。たとえば,UNIX オペレーティング・システムの大部分は C で書かれています。システム・プログラムを作成する場合,プログラムが動作する環境を検索または変更しなければならないことがあります。この章では,このような作業やその他のシステム・タスクを実行するための HP C Run-Time Library (RTL) 関数について説明します。

表 9-1 は, HP C RTL で提供されるすべてのシステム関数を示しています。各関数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)』「リファレンス・セクション」を参照してください。

表 9-1 システム関数
関数 説明
システム関数---検索およびソート・ユーティリティ
bsearch ソートされたオブジェクトの配列でバイナリ検索を実行して,指定されたオブジェクトを検索する。
qsort クイック・ソート・アルゴリズムを実装することにより,オブジェクトの配列をソートする。
システム関数---プロセス情報の検索
ctermid SYS$COMMAND の等価文字列を与える文字列を返す。これは制御端末の名前である。
cuserid 現在のプロセスを開始したユーザの名前を格納した文字列を指すポインタを返す。
getcwd 現在のワーキング・ディレクリのファイル指定を指すポインタを返す。
getegid , geteuid ,
getgid , getuid
OpenVMS の用語で,ユーザ識別コード (UIC) からグループ番号とメンバ番号を返す。
getenv 現在のプロセスの環境配列を検索し,指定された環境に関連付けられている値を返す。
getlogin 現在のセッションに関連付けられているユーザのログイン名を取得する。
getpid 現在のプロセスのプロセス ID を返す。
getppid 呼び出しプロセスの親プロセス ID を返す。
getpwnam ユーザ・データベース内のユーザ名情報にアクセスする。
getpwuid ユーザ・データベース内のユーザ ID 情報にアクセスする。
システム関数---プロセス情報の変更
chdir デフォルト・ディレクトリを変更する。
chmod ファイルのファイル保護を変更する。
chown ファイルのオーナのユーザ識別コード (UIC) を変更する。
mkdir ディレクトリを作成する。
nice 引数に指定された値だけ,プロセスの基本優先順位に対してプロセス優先順位を上げる,または下げる。
putenv 環境変数を設定する。
setenv 現在の環境リストに環境変数名を挿入する,またはリセットする。
setgid, setuid プログラムの移植性を確保するために実装されており,機能はない。
sleep , usleep 少なくとも引数に指定された秒数だけ,現在のプロセスの実行を停止する。
umask 新しいファイルが作成されるときに使用されるファイル保護マスクを作成する。古いマスクの値を返す。
システム関数---日付/時刻情報の取得と変換
asctime 年月日時分秒形式の時刻を 26 文字の文字列に変換する。
clock プログラムの実行開始以降に使用された CPU 時間をマイクロ秒単位で判断する。
clock_getres 指定されたクロックの精度を取得する。
clock_gettime 指定されたクロックの現在の時刻 (秒およびナノ秒) を返す。
clock_settime 指定されたクロックを設定する。
ctime 秒単位の時刻を asctime 関数で生成される形式の ASCII 文字列に変換する。
decc$fix_time OpenVMS のバイナリ・システム時刻を UNIX のバイナリ時刻に変換する。
difftime 引数によって指定される 2 つの時刻の差を秒単位で計算する。
ftime 1970 年 1 月 1 日 00:00:00 からの経過時間を timeb 構造体に返す。
getclock システム単位で設定されているクロックの現在の値を取得する。
getdate 書式設定された文字列を時刻/日付構造体に変換する。
getitimer 間隔タイマの値を返す。
gettimeofday 日付と時刻を取得する。
gmtime 時間単位を年月日時分秒形式の UTC 時刻に変換する。
localtime 時刻 (1970 年 1 月 1 日 00:00:00 からの経過時間を秒数で表現した時刻) を時,分,秒などに変換する。
mktime ローカル時刻構造体を Epoch (1970 年 1 月 1 日 00:00:00) からの経過時間に変換する。
nanosleep 高精度の sleep (リアルタイム)。指定された時間,プロセスの実行を一時停止する。
setitimer 間隔タイマの値を設定する。
strftime, wcsftime 指定された書式文字列による制御のもとで,配列に文字を格納する。
strptime 文字列を日付と時刻の値に変換する。
time 1970 年 1 月 1 日 00:00:00 からの経過時間を秒単位で返す。
times 現在のプロセスと終了した子プロセスの累積時間を返す。
tzset タイム・ゾーン変換を設定する,またはタイム・ゾーン変換にアクセスする。
ualarm 間隔タイマの時間切れを設定または変更する。
wcsftime tm 構造体に格納されている日付と時刻の情報を使用して,ワイド文字の出力文字列を作成する。
システム関数---その他
VAXC$CRTL_INIT 実行時環境を初期化し,終了および条件ハンドラを設定する。この結果, HP C RTL 関数を他の言語から呼び出すことができるようになる。

例 9-1 は, cuserid関数の使用方法を示しています。

例 9-1 ユーザ名へのアクセス
/*        CHAP_9_GET_USER.C                                   */ 
 
/* Using cuserid, this program returns the user name.         */ 
 
#include <stdio.h> 
 
main() 
{ 
    static char string[L_cuserid]; 
 
    cuserid(string); 
    printf("Initiating user: %s\n", string); 
} 

TOLLIVER という名前のユーザがプログラムを実行すると, stdoutに次の情報が表示されます。

$ RUN  EXAMPLE1
Initiating user: TOLLIVER

例 9-2 は, getenv関数の使用方法を示しています。

例 9-2 端末情報へのアクセス
/*        CHAP_9_GETTERM.C                              */ 
 
/* Using getenv, this program returns the terminal.     */ 
 
#include <stdio.h> 
#include <stdlib.h> 
 
main() 
{ 
    printf("Terminal type: %s\n", getenv("TERM")); 
} 

132 カラム・モードの VT100 端末で 例 9-2 を実行すると,次の情報が表示されます。

$ RUN  EXAMPLE3
Terminal type: vt100-132

例 9-3 は, getenvを使用してユーザのデフォルト・ログイン・ディレクトリを調べる方法と, chdirを使用してそのディレクトリに変更する方法を示しています。

例 9-3 デフォルト・ディレクトリの操作
/*       CHAP_9_CHANGE_DIR.C                                    */ 
    
/* This program performs the equivalent of the DCL command      */ 
/* SET DEFAULT SYS$LOGIN. However, once the program exits, the  */ 
/* directory is reset to the directory from which the program   */ 
/* was run.                                                     */ 
 
#include <stdio.h> 
#include <unistd.h> 
#include <stdlib.h> 
 
main() 
{ 
    char *dir; 
    int i; 
 
    dir = getenv("HOME"); 
    if ((i = chdir(dir)) != 0) { 
        perror("Cannot set directory"); 
        exit(0); 
    } 
 
    printf("Current directory: %s\n", dir); 
} 

例 9-3 を実行すると,次の情報が表示されます。

$ RUN EXAMPLE4
Current directory: dba0:[tolliver]
$ 

例 9-4 は, time, localtime, strftime関数を使用して端末に正しい日付と時刻をプリントする方法を示しています。

例 9-4 日付と時刻のプリント
/*        CHAP_9_DATE_TIME.C                                    */ 
 
/* The time function returns the time in seconds; the localtime */ 
/* function converts the time to hours, minutes, and so on;     */ 
/* the strftime function uses these values to obtain a string   */ 
/* in the desired format.                                       */ 
 
#include <time.h> 
#include <stdio.h> 
 
#define MAX_STRING 80 
 
main() 
{ 
    struct tm *time_structure; 
    time_t time_val; 
    char output_str[MAX_STRING]; 
 
    time(&time_val); 
    time_structure = localtime(&time_val); 
 
    /* Print the date  */ 
 
    strftime(output_str, MAX_STRING, 
             "Today is %A, %B %d, %Y", time_structure); 
 
    printf("%s\n", output_str); 
 
    /* Print the time using a 12-hour clock format. */ 
 
    strftime(output_str, MAX_STRING, 
             "The time is %I:%M %p", time_structure); 
 
    printf("%s\n", output_str); 
}    

例 9-4 を実行すると,次の情報が表示されます。

$ RUN  EXAMPLE5
Today is Thursday, May 20, 1993
The time is 10:18 AM
$ 


目次 索引

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