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


前へ 次へ 目次 索引


UNIX ファイル名変換の拡張

性能を改善するための各種の拡張 (特に,高速の 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          

次の C RTL 関数は,変更されました。


   endpwent      setgid          geteuid 
   getegid       setpwent        getgid 
   getpwent      setuid          getuid 
   ttyname 


リファレンス・セクション

このリファレンス・セクションでは,HP C ランタイム・ライブラリ (RTL) に含まれる関数についてアルファベット順に説明します。


a64l (Alpha only)

文字列を long整数に変換します。

形式

#include <stdlib.h>

long a64l (const char *s);


引数

s

long整数に変換される文字列へのポインタ。

説明

a64l関数と l64a関数は,次のように,ベース 64 ASCII 文字として格納された数値を操作するために使用されます。

long整数を格納するための各文字は, 0 〜 63 の数値を表しています。 long整数を表すために,最大 6 文字まで使用できます。

文字は,次のように変換されます。

a64l関数は,ベース 64 表現へのポインタ (最初の桁が最下位) を受け取り,対応する long値を返します。 s パラメータが指す文字列が 6 文字を超えている場合, a64lは最初の 6 文字だけを使用します。

文字列の最初の 6 文字の中にヌル終了文字が含まれている場合, a64lはヌル終了文字より前の文字だけを使用します。

a64l関数は,文字列を左から右へと変換します。このとき,最下位の数が左端で,各文字を 6 ビットのベース 64 数としてデコードします。

s が NULL ポインタの場合,または s が指す文字列が l64aを以前に呼び出して生成された文字列でない場合, a64lの動作は規定されていません。

l64aも参照してください。


戻り値

n 正常終了した場合,入力文字列を変換して得られた long 値です。
0L s が指している文字列が空文字列であることを示します。


abort

プログラムの実行を終了するシグナル SIGABRT を送信します。

形式

#include <stdlib.h>

void abort (void);


abs

整数の絶対値を返します。

形式

#include <stdlib.h>

int abs (int x);


引数

x

整数。

戻り値

x 入力引数の絶対値。引数が LONG_MIN の場合, --LONG_MIN は int 変数に格納できないため, abs は LONG_MIN を返します。


access

指定されたアクセス・モードがファイルで許可されているかどうかを確認します。この関数は 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); 
    } 
} 


acos

引数の逆余弦を返します。

形式

#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 に設定されます。


acosh (Alpha only)

引数の双曲線逆余弦を返します。

形式

#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 は不正な引数です。


[w]addch

ウィンドウの現在のカーソルの位置に 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 関数を参照してください。


[w]addstr

str によって示される文字列をウィンドウの現在のカーソルの位置に追加します。

形式

#include <curses.h>

int addstr (char *str);

int waddstr (WINDOW *win, char *str);


引数

win

ウィンドウを指すポインタ。

str

文字列を指すポインタ。

説明

waddstr関数をサブウィンドウで使用すると,文字列は親ウィンドウにも書き込まれます。

addstrルーチンは waddstrと同じ機能を実行しますが, stdscrウィンドウに対して動作する点が異なります。

このルーチンを呼び出した結果,カーソルの位置は変化します。


戻り値

OK 正常終了を示します。
ERR 関数を実行した結果,画面が不正にスクロールされることを示します。ただし,文字列は可能な範囲でウィンドウに書き込まれます。詳細については, scrollok 関数を参照してください。


alarm

引数によって示される秒数が経過した後,シグナル 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 前のアラーム要求から残っている秒数。


asctime, asctime_r

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_rasctimeの相違点は, asctime_rが結果をユーザ指定バッファに格納するのに対し, asctimeHP C RTL によって割り当てられたスレッド固有の静的メモリに結果を格納する点です。このスレッド固有の静的メモリは, ctimeまたは asctimeを再び呼び出すと,上書きされる可能性があります。保存する必要がある場合は,コピーを作成してください。

正常終了すると, asctimeは文字列を指すポインタを返します。 asctime_rは 2 番目の引数を返します。異常終了した場合は,これらの関数は NULL ポインタを返します。

tmのメンバの一覧については, localtime関数を参照してください。

注意

一般に,UTC ベースの時刻関数は,プロセス単位のデータであるメモリ内のタイム・ゾーン情報に影響を与える可能性があります。しかし,アプリケーションの実行中,システム・タイム・ゾーンが変化せず ( これは一般的なケースです ),タイム・ゾーン・ファイルのキャッシュが有効に設定されている場合 ( これはデフォルトです ),時刻関数 asctime_rctime_rgmtime_rlocaltime_r_rバリアントはスレッド・セーフで,かつ AST リエントラントです。

しかし,アプリケーションの実行中にシステム・タイム・ゾーンが変化する可能性がある場合や,タイム・ゾーン・ファイルのキャッシュが有効に設定されていない場合は, UTC ベースの時刻関数のバリアントはいずれも第 3 の関数クラスに属し,これはスレッド・セーフでも AST リエントラントでもありません。


戻り値

x 正常終了した場合は,文字列を指すポインタ。
NULL 異常終了を示します。


前へ 次へ 目次 索引