前へ | 次へ | 目次 | 索引 |
性能を改善するための各種の拡張 (特に,高速の UNIX 名変換による) には,以下のものがあります。
以下の新しい C RTL 関数が,OpenVMS バージョン 7.3-2 に用意されています。
ファイルの読み取り/書き込み関数
pread readv __writev64 pwrite _readv64 |
プリント関数
snprintf vsnprintf |
シグナル関数
sighold sigignore sigrelse sigwait sigtimedwait sigwaitinfo |
時間関数
nanosleep clock_gettime clock_getres clock_settime |
パスワード関数
getpwnam_r _getpwnam_r64 __getpwnam64 _getpwent64 getpwuid getpwuid_r __getpwuid64 _getpwuid_r64 |
セキュリティ/インパーソネーション関数
endgrent getgrnam getsid setpgrp getgrent getgrnam_r seteuid setregid getgrgid getpgid setgrent setreuid getgrgid_r getpgrp setpgid setsid |
ソケット関数
poll |
その他の関数
a64l globfree rand_r decc$set_child_default_dir glob l64a ttyname_r |
endpwent setgid geteuid getegid setpwent getgid getpwent setuid getuid ttyname |
文字列を long整数に変換します。
#include <stdlib.h>long a64l (const char *s);
s
long整数に変換される文字列へのポインタ。
a64l関数と l64a関数は,次のように,ベース 64 ASCII 文字として格納された数値を操作するために使用されます。
- a64lは,文字列を long整数に変換します。
- l64aは, long整数を文字列に変換します。
long整数を格納するための各文字は, 0 〜 63 の数値を表しています。 long整数を表すために,最大 6 文字まで使用できます。
文字は,次のように変換されます。
- ピリオド (.) は,0 を表します。
- スラッシュ (/) は,1 を表します。
- 0 〜 9 の数字は,2 〜 11 を表します。
- 大文字 A 〜 Z は,12 〜 37 を表します。
- 小文字 a 〜 z は,38 〜 63 を表します。
a64l関数は,ベース 64 表現へのポインタ (最初の桁が最下位) を受け取り,対応する long値を返します。 s パラメータが指す文字列が 6 文字を超えている場合, a64lは最初の 6 文字だけを使用します。
文字列の最初の 6 文字の中にヌル終了文字が含まれている場合, a64lはヌル終了文字より前の文字だけを使用します。
a64l関数は,文字列を左から右へと変換します。このとき,最下位の数が左端で,各文字を 6 ビットのベース 64 数としてデコードします。
s が NULL ポインタの場合,または s が指す文字列が l64aを以前に呼び出して生成された文字列でない場合, a64lの動作は規定されていません。
l64aも参照してください。
n 正常終了した場合,入力文字列を変換して得られた long 値です。 0L s が指している文字列が空文字列であることを示します。
プログラムの実行を終了するシグナル SIGABRT を送信します。
#include <stdlib.h>void abort (void);
整数の絶対値を返します。
#include <stdlib.h>int abs (int x);
x
整数。
x 入力引数の絶対値。引数が LONG_MIN の場合, --LONG_MIN は int 変数に格納できないため, abs は LONG_MIN を返します。
指定されたアクセス・モードがファイルで許可されているかどうかを確認します。この関数は UIC 保護のほか,OpenVMS ACL (Access Control List) を確認します。
注意
access関数は,引数としてネットワーク・ファイルを受け付けません。
#include <unistd.h>int access (const char *file_spec, int mode);
file_spec
OpenVMS 形式または UNIX 形式のファイル指定を示す文字列。ファイル指定には通常のデフォルトおよび論理名変換が適用されます。mode
表 REF-1 に示すように解釈されます。
表 REF-1 mode 引数の解釈 mode 引数 アクセス・モード F_OK ファイルが存在するかどうかの判定 X_OK 実行 W_OK 書き込み (暗黙に削除アクセスも示す) R_OK 読み込み
アクセス・モードの組み合わせは値の論理和 (OR) によって指定します。たとえば,ファイルで RWED アクセス・モードが許可されているかどうかを確認するには,次のように指定して accessを呼び出します。
access (file_spec, R_OK | W_OK | X_OK);
0 アクセスが許可されていることを示します。 - 1 アクセスが許可されていないことを示します。
#include <unistd.h> #include <stdlib.h> #include <stdio.h> main() { if (access("sys$login:login.com", F_OK)) { perror("ACCESS - FAILED"); exit(2); } }
引数の逆余弦を返します。
#include <math.h>double acos (double x);
float acosf (float x); (Alpha only)
long double acosl (long double x); (Alpha only)
double acosd (double x); (Alpha only)
float acosdf (float x); (Alpha only)
long double acosdl (long double x); (Alpha only)
x
領域 [ - 1,1] の実数値として表したラジアン値。
acos関数は,領域 [ - 1,1] の x に対して, [0,pi] ラジアンの範囲で x の逆余弦の主値を計算します。acosd関数は,領域 [ - 1,1] の x に対して, [0,180] 度の範囲で x の逆余弦の主値を計算します。
abs(x) > 1 の場合, acos(x) の値は 0 であり, errnoは EDOM に設定されます。
引数の双曲線逆余弦を返します。
#include <math.h>double acosh (double x);
float acoshf (float x);
long double acoshl (long double x);
x
領域 [1, +Infinity] の実数値として表したラジアン値。
acosh関数は,領域 [1, +無限大] の x に対して, x の双曲線逆余弦を返します。ただし, acosh(x) = ln(x + sqrt(x**2 - 1)) です。acosh関数は cosh関数の逆関数であり, acosh( cosh(x)) = |x| です。
x < 1 は不正な引数です。
ウィンドウの現在のカーソルの位置に 1 文字を追加します。
#include <curses.h>int addch (char ch);
int waddch (WINDOW *win, char ch);
win
ウィンドウを指すポインタ。ch
追加する文字。改行文字 (\n) は,行を行末まで消去し,カーソルを次の行の同じ x 座標に移動します。リターン文字 (\r) は,カーソルをウィンドウの行の先頭に移動します。タブ文字 (\t) は,カーソルをウィンドウ内の次のタブストップに移動します。
waddch関数をサブウィンドウで使用すると,その親ウィンドウにも文字が書き込まれます。addchルーチンは waddchと同じ機能を実行しますが, stdscrウィンドウに対して動作する点が異なります。
文字を画面に書き込んだ後,カーソルは移動します。
OK 正常終了を示します。 ERR 文字を書き込んだ結果,画面が不正にスクロールされることを示します。詳細については, scrollok 関数を参照してください。
str によって示される文字列をウィンドウの現在のカーソルの位置に追加します。
#include <curses.h>int addstr (char *str);
int waddstr (WINDOW *win, char *str);
win
ウィンドウを指すポインタ。str
文字列を指すポインタ。
waddstr関数をサブウィンドウで使用すると,文字列は親ウィンドウにも書き込まれます。addstrルーチンは waddstrと同じ機能を実行しますが, stdscrウィンドウに対して動作する点が異なります。
このルーチンを呼び出した結果,カーソルの位置は変化します。
OK 正常終了を示します。 ERR 関数を実行した結果,画面が不正にスクロールされることを示します。ただし,文字列は可能な範囲でウィンドウに書き込まれます。詳細については, scrollok 関数を参照してください。
引数によって示される秒数が経過した後,シグナル SIGALRM ( <signal.h>ヘッダ・ファイルに定義 ) を呼び出しプロセスに送信します。
#include <unistd.h>unsigned int alarm (unsigned int seconds); (ISO POSIX-1)
int alarm (unsigned int seconds); (Compatability)
seconds
最大値は LONG_MAX 秒です。
引数を 0 に設定して alarm関数を呼び出すと,保留中のアラームはすべて取り消されます。alarmによって生成されたシグナルは,途中でキャッチされるか無視されない限り,プロセスを終了します。 alarmを連続して呼び出すと,アラーム・クロックが再初期化されます。アラームはスタックされません。
クロックの分解能力は 1 秒であるため,シグナルは最大 1 秒,早く発生することがあります。 SIGALRM シグナルがキャッチされると,スケジューリングの遅れのために実行の再開が遅れることがあります。
SIGALRM シグナルが生成されると,プロセスがハイバネート状態であるかどうかにかかわらず, SYS$WAKE の呼び出しが生成されます。保留中のウェイク処理が発生すると,現在の pause() はただちに戻ります (SIGALRM をキャッチした関数が終了した後 )。
n 前のアラーム要求から残っている秒数。
tm構造体に格納されている年月日時分秒形式の時刻を次の形式の 26 文字の文字列に変換します。
Sun Sep 16 01:03:52 1984\n\0
すべてのフィールドの幅は一定です。
#include <time.h>char *asctime (const struct tm *timeptr);
char *asctime_r (const struct tm *timeptr, char *buffer); (ISO POSIX-1)
timeptr
年月日時分秒形式の時刻を格納した tm型の構造体を指すポインタ。tm構造体は <time.h>ヘッダ・ファイルに定義されており, localtimeの説明の 表 REF-4 にも示されています。
buffer
26 バイト以上の長さの文字配列を指すポインタ。この配列は,生成された日付/時刻文字列を格納するために使用されます。
asctime関数と asctime_r関数は, tmの内容を 26 文字の文字列に変換し,その文字列を指すポインタを返します。asctime_rと asctimeの相違点は, asctime_rが結果をユーザ指定バッファに格納するのに対し, asctimeは HP C RTL によって割り当てられたスレッド固有の静的メモリに結果を格納する点です。このスレッド固有の静的メモリは, ctimeまたは asctimeを再び呼び出すと,上書きされる可能性があります。保存する必要がある場合は,コピーを作成してください。
正常終了すると, asctimeは文字列を指すポインタを返します。 asctime_rは 2 番目の引数を返します。異常終了した場合は,これらの関数は NULL ポインタを返します。
tmのメンバの一覧については, localtime関数を参照してください。
注意
一般に,UTC ベースの時刻関数は,プロセス単位のデータであるメモリ内のタイム・ゾーン情報に影響を与える可能性があります。しかし,アプリケーションの実行中,システム・タイム・ゾーンが変化せず ( これは一般的なケースです ),タイム・ゾーン・ファイルのキャッシュが有効に設定されている場合 ( これはデフォルトです ),時刻関数 asctime_r, ctime_r, gmtime_r, localtime_rの _rバリアントはスレッド・セーフで,かつ AST リエントラントです。しかし,アプリケーションの実行中にシステム・タイム・ゾーンが変化する可能性がある場合や,タイム・ゾーン・ファイルのキャッシュが有効に設定されていない場合は, UTC ベースの時刻関数のバリアントはいずれも第 3 の関数クラスに属し,これはスレッド・セーフでも AST リエントラントでもありません。
x 正常終了した場合は,文字列を指すポインタ。 NULL 異常終了を示します。
前へ | 次へ | 目次 | 索引 |