日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル >  V8.3ライブラリ

OpenVMS マニュアル


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


前へ 次へ 目次 索引


注意

OpenVMS Version 7.0 で導入された UTC ベースの時刻関数は,非 UTC ベースの時刻関数と比べると性能が低くなっていました。

OpenVMS Version 7.1 では,性能を改善するために,タイム・ゾーン・ファイル用のキャッシュが追加されました。キャッシュのサイズは論理名 DECC$TZ_CACHE_SIZE によって決定されます。ほとんどの国が時刻を年に 2 回変更することに対応して,デフォルトのキャッシュ・サイズはタイム・ゾーン・ファイルを 2 つ保持できるだけの大きさになっています。

ctimelocaltimemktimestrftime,および wcsftimeも参照してください。




TZ 指定の例


EST5EDT4,M4.1.0,M10.5.0 

この TZ 指定の例は, 1987 年に定められた米国東部タイム・ゾーンの規則を記述したものです。

  • EST (Eastern Standard Time) は標準時を示し,UTC から 5 時間遅れています。

  • EDT (Eastern Daylight Time) はサマータイムを示し, UTC から 4 時間遅れています。 EDT は 4 月の最初の日曜日に始まり,10 月の最後の日曜日に終わります。

どちらの場合も time は指定されていないため,変更はデフォルトの時刻である午前 2:00 に行われます。この例では,開始日および終了日はデフォルト値に等しいので省略することもできます。




ualarm

インターバル・タイマのタイムアウトを設定または変更します。



形式

#include <unistd.h>

useconds_t ualarm (useconds_t mseconds, useconds_t interval);




引数



mseconds

実時間のマイクロ秒を指定します。

interval

タイマを繰り返すインターバルを指定します。



説明

ualarm関数は, useconds で指定された実時間のマイクロ秒数が経過した後に,呼び出し元プロセスに対して SIGALRMシグナルを送信します。 interval 引数がゼロでなければ, interval で指定されたマイクロ秒の間隔で,タイムアウト通知が繰り返し発生します。通知シグナル SIGALRMがキャッチされないか,無視された場合,呼び出し元プロセスは終了します。

ualarm関数と setitimer関数を組み合わせて呼び出した場合, AST 状態が無効になっていれば,戻り値は無効となります。

ualarm関数と setitimer関数を組み合わせて呼び出した場合, AST 状態が有効になっていれば,戻り値は有効となります。

これは,AST が無効化されていたり, AST レベルで呼び出されたハンドラから呼び出されていた場合, AST ハンドラを呼び出してタイマの以前の値をクリアすることが不可能であるためです。

注意

ualarmalarmまたは sleepの間の相互作用については定められていません。

setitimerも参照してください。




戻り値

n 以前の ualarm または setitimer 呼び出しからの残りのマイクロ秒数。
0 予定されているタイムアウトがない,または ualarm が以前に呼び出されたことがありません。
-1    エラーを示します。




umask

新しいファイルが作成されるときに使用されるファイル保護マスクを作成し,以前のマスク値を返します。



形式

#include <stat.h>

mode_t umask (mode_t mode_complement);




引数



mode_complement

新しいファイルが作成されるときに,どのビットをオフにするかを示します。各ビットの意味については, chmodの説明を参照してください。



説明

初期状態では,ファイル保護マスクはカレント・プロセスのデフォルト・ファイル保護を元に設定されます。これは,C のメイン・プログラムがスタートアップするか, DECC$CRTL_INIT( または VAXC$CRTL_INIT) が呼び出されたときに行われます。この設定は, umaskを呼び出すことで,プログラムが作成するすべてのファイルについて変更することもできますし, chmodを使用して個々のファイルのファイル保護を変更することもできます。 openまたは creatによって作成されるファイルのファイル保護は, opencreatのモード引数と,前の呼び出しで umaskに渡された値の補数の間のビット論理積です。

注意

UNIX システム・コール関数 umaskmkdircreat,および openで OpenVMS RMS のデフォルト保護を持つファイルを作成するには, umaskを決して呼び出さないプログラムの中で, 0777 のファイル保護モード引数を指定して mkdircreat,および openを呼び出します。これらのデフォルト保護では,ACL やファイルの以前のバージョンなどに基づいて,保護が正しく設定されます。

vfork/ exec呼び出しを行うプログラムでは,新しいプロセス・イメージは, umaskが呼び出されたかどうかの状態を,呼び出し元のプロセス・イメージから継承します。 umask設定と, umask関数が呼び出されたかどうかの状態は,どちらも属性として継承されます。




戻り値

x 以前のマスク値。




uname

システム識別情報を取得します。



形式

#include <utsname.h>

int uname (struct utsname *name);




引数



name

現在のシステム識別子。



説明

uname関数は,現在のシステムを識別する情報の null で終了する文字列を, name 引数が参照する構造体に格納します。

utsname構造体は <utsname.h>ヘッダ・ファイルに定義されており,以下のメンバを含んでいます。

sysname オペレーティング・システムの名前
nodename このマシンのネットワーク名
release オペレーティング・システムのリリース・レベル
version オペレーティング・システムのバージョン・レベル
machine マシン・ハードウェア・プラットフォーム




戻り値

0 成功を示します。
-1    エラーを示します。 errno または vaxc$errno が適切な値に設定されます。




ungetc

文字を入力ストリームに戻し,ストリームの位置をその文字の前に設定します。



形式

#include <stdio.h>

int ungetc (int character, FILE *file_ptr);




引数



character

int型の値。

file_ptr

ファイル・ポインタ。



説明

ungetc関数を使用すると,文字が file_ptr が指定するファイルに戻されます。

以前にそのファイルに対する操作が行われていなくても, 1 つの文字が戻されることが保証されます。 fseek関数は,戻された文字に関するすべての記憶を消去します。戻された文字は,下位のファイルには書き込まれません。戻される文字が EOF だった場合,操作は失敗し,入力ストリームは変更されず, EOF が返されます。

fseekgetcも参照してください。




戻り値

x 戻される文字。
EOF 文字を戻せないことを示します。




ungetwc

ワイド文字を入力ストリームに戻します。



形式

#include <wchar.h>

wint_t ungetwc (wint_t wc, FILE *file_ptr);




引数



wc

wint_t型の値。

file_ptr

ファイル・ポインタ。



説明

ungetwc関数を使用すると,ワイド文字が file_ptr が指定するファイルに戻されます。

以前にそのファイルに対する操作が行われていなくても, 1 つの文字が戻されることが保証されます。戻された文字が読み込まれる前にファイル位置設定関数 ( fseekなど) が呼び出されると,戻された文字を表すバイトは失われます。

戻される文字が WEOF だった場合,操作は失敗し,入力ストリームは変更されず, WEOF が返されます。

getwcも参照してください。




戻り値

x 戻される文字。
WEOF 関数が文字を戻せなかったことを示します。 errno は以下のいずれかに設定されます。

  • EBADF---ファイル記述子が有効でない。

  • EALREADY---すでに同じファイル対する操作が進行中である。

  • EILSEQ---無効なワイド文字コードが検出された。




unlink (Alpha, I64)

指定したシンボリック・リンクをシステムから削除します。



形式

#include <unistd.h>

int unlink (const char *link_name);




引数



link_name

削除するシンボリック・リンクの名前。



説明

unlink関数は,指定したシンボリック・リンク (link_name) をシステムから削除します。シンボリック・リンクの内容は調べられません。また,その内容で指定されているファイルについても,何も行われません。シンボリック・リンク以外のファイルを指定して unlink関数を実行したときの動作は, C RTL の remove関数と同じです。

symlinkreadlinkrealpathlchown,および lstatも参照してください。




戻り値

0 成功したことを示します。
-1    エラーが発生したことを示します。指定したファイル ( link_name) は変更されていません。 errno に, remove から返された errno の値が設定されます。




unordered (Alpha, I64)

引数の片方または両方が NaN だった場合に値 1 (TRUE) を返します。それ以外の場合は,値 0 (FALSE) を返します。



形式

#include <math.h>

double unordered (double x, double y);

float unorderedf (float x, float y);

long double unorderedl (long double x, long double y);




引数



x

実数。

y

実数。



戻り値

1 引数の片方または両方が NaN です。
0 どちらの引数も NaN ではありません。




unsetenv

環境リストから,環境変数名のすべてのインスタンスを削除します。



形式

#include <stdlib.h>

void unsetenv (const char *name);




引数



name

環境リストから削除する環境変数。



説明

unsetenv関数は,name 引数がポイントする変数名のすべてのインスタンスを環境リストから削除します。



usleep

指定されたインターバルだけ実行を一時停止します。



形式

#include <unistd.h>

int usleep (unsigned int mseconds);




引数



mseconds

実行を一時停止するマイクロ秒数。



説明

usleep関数は, mseconds 引数で指定されたマイクロ秒数だけ,カレント・プロセスの実行を一時停止します。この引数は 1,000,000 未満でなくてはなりません。値が 0 だった場合,呼び出しは何の効果も持ちません。

各プロセスに,1 つのリアルタイムのインターバル・タイマが存在しています。 usleep関数は,このタイマの前の設定には干渉しません。プロセスが usleepを呼び出す前にこのタイマを設定しており, mseconds で指定された時間がインターバル・タイマの以前の設定と等しいか,それよりも長かった場合,プロセスはタイマが満了する直前にウェイクアップします。




戻り値

0 成功を示します。
-1    エラーが発生したことを示します。 errno は EINVAL に設定されます。




utime

ファイルのアクセスおよび変更時刻を設定します。



形式

#include <utime.h>

int utime (const char *path, const struct utimbuf *times);




引数



path

ファイルへのポインタ。

times

NULL ポインタ,または utimbuf構造体へのポインタ。



説明

utime関数は, path 引数で指定されたファイルのアクセスおよび変更時刻を設定します。

times が NULL ポインタである場合には,ファイルのアクセスおよび変更時刻は現在の時刻に設定されます。 utimeをこの形で使用するためには,プロセスの実効ユーザ ID がファイルのオーナと一致する,またはプロセスがファイルへの書き込み許可を持っているか,適切な特権を持っている必要があります。

times が NULL ポインタでない場合には, utimbuf構造体へのポインタとして解釈され,アクセスおよび変更時刻は指定された構造体に含まれている値に設定されます。 utimeをこの形で使用できるのは,ファイルのユーザ ID に等しい実効ユーザ ID を持っているプロセスか,または適切な特権を持つプロセスに限られます。

utimbuf構造体は <utime.h>ヘッダ・ファイルによって定義されています。 utimbuf構造体の中の時刻は,Epoch 以降の経過秒数です。

実行に成功すると, utimeは最後のファイル状態の変更時刻 st_ctimeを更新します。 <stat.h>ヘッダ・ファイルを参照してください。

注意 (Alpha, I64)

OpenVMS Alpha システムおよび I64 システムでは, statfstatutime,および utimes関数は,新しいファイル・システムの POSIX 準拠のファイル・タイムスタンプ・サポートに対応して拡張されています。

このサポートは,V7.3 およびそれ以降の OpenVMS Alpha システム上の ODS-5 デバイスでのみ使用できます。

この変更が行われる以前, statおよび fstat関数は,以下のファイル属性に基づいて st_ctimest_mtime,および st_atimeフィールドの値を設定していました。

st_ctime---ATR$C_CREDATE (ファイル作成時刻)
st_mtime---ATR$C_REVDATE (ファイル更新時刻)
st_atime---ファイル・アクセス時刻がサポートされていなかったため,常に st_mtimeに設定されていた

また,ファイル変更時刻については, utimeおよび utimesは ATR$C_REVDATE ファイル属性を変更し,ファイル・アクセス時刻引数は無視していました。

変更が行われて以降,ODS-5 デバイス上のファイルについては, statおよび fstat関数は,以下の新しいファイル属性に基づいて st_ctimest_mtime,および st_atimeフィールドの値を設定するようになりました。

st_ctime---ATR$C_ATTDATE (最終属性変更時刻)
st_mtime---ATR$C_MODDATE (最終データ変更時刻)
st_atime---ATR$C_ACCDATE (最終アクセス時刻)

ODS-2 デバイスのように ATR$C_ACCDATE が 0 である場合, statおよび fstat関数は st_atimest_mtimeに設定します。

ファイル変更時刻については, utimeおよび utimes関数は, ATR$C_REVDATE と ATR$C_MODDATE の両方のファイル属性を変更します。ファイル・アクセス時刻については,これらの関数は ATR$C_ACCDATE ファイル属性を変更します。 ODS-2 デバイス上で ATR$C_MODDATE および ATR$C_ACCDATE ファイル属性を設定しても効果はありません。

互換性を保つために,デバイスの種類にかかわらず, statfstatutime,および utimesの以前の動作はデフォルトのままとなっています。

新しい動作を有効にするためには,アプリケーションを呼び出す前に, DECC$EFS_FILE_TIMESTAMPS 論理名を明示的に "ENABLE" に定義する必要があります。この論理名を設定しても, ODS-2 デバイス上のファイルに対する statfstatutime,および utimesの動作には影響はありません。




戻り値

0 実行に成功しました。
-1    エラーを示します。関数は errno を以下のいずれかの値に設定します。

utime 関数は,以下の場合に 失敗します。

  • EACCES -- path 接頭辞のコンポーネントで検索許可が拒否された。または, times 引数が NULL ポインタで,プロセスの実効ユーザ ID がファイルのオーナと一致せず,書き込みアクセスが拒否された。

  • ELOOP -- path を解決する過程で検出したシンボリック・リンクの数が多すぎた。

  • ENAMETOOLONG -- path 引数の長さが PATH_MAX を超えた, pathname コンポーネントが NAME_MAX よりも長かった,またはシンボリック・リンクのパス名解決の過程で,長さが PATH_MAX を超える中間結果が生成された。

  • ENOENT -- path が既存のファイルを指定していない,または path が空の文字列である。

  • ENOTDIR -- path 接頭辞のコンポーネントがディレクトリでない。

  • EPERM -- times は NULL ポインタではなく,呼び出し元プロセスの実効ユーザ ID はファイルへの書き込みアクセスを持っているが,ファイルのオーナと一致せず,呼び出し元プロセスは適切な特権を持っていない。

  • EROFS -- ファイルを含んでいるファイル・システムは読み込み専用である。


前へ 次へ 目次 索引



         印刷用画面へ

プライバシー 本サイト利用時の合意事項