HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
clearerr関数と同様ですが, flockfileと funlockfileで保護された範囲内だけで使用します。
#include <stdio.h>void clearerr_unlocked (FILE *file_ptr);
file_ptr
ファイル・ポインタ。
リエントラント版である clearerr関数は,複数スレッドからの同時呼び出しに対してロックされます。その結果,ストリームの一貫性を保証するためのオーバヘッドが生じます。アンロック版である clearerr_unlockedを使用すると,このオーバヘッドを避けることができます。 clearerr_unlockedマクロは, clearerrマクロと機能的に同じですが,スレッド・セーフな方法で実装する必要がない点が異なります。 clearerr_unlocked関数は, flockfile関数と funlockfile関数を対で使用して保護された範囲内でだけ,安全に使用することができます。呼び出し元は, clearerr_unlockedを使用する前に,ストリームを確実にロックする必要があります。flockfile, ftrylockfile,および funlockfileも参照してください。
ウィンドウのクリア・フラグを設定します。
#include <curses.h>clearok (WINDOW *win, bool boolf);
win
端末画面全体のサイズ。 clearok関数はウィンドウ stdscrおよび curscrに対して使用できます。boolf
論理値 TRUE または FALSE。引数が TRUE の場合は, refreshを次回呼び出したときに,クリアスクリーンが出力されます。 boolf が FALSE の場合は,画面のクリアは停止されます。bool型は,次に示すように <curses.h>ヘッダ・ファイルに定義されています。
#define bool int
clear関数と異なり, clearok関数はウィンドウの内容を変更しません。win 引数が curscrの場合は, refreshを次に呼び出したときに, refreshに渡されたウィンドウが端末画面全体のサイズのウィンドウでない場合でも,クリアスクリーンが実行されます。
プロセスの開始時から使用された CPU 時間 (10 ミリ秒単位) を返します。報告される時間は呼び出しプロセスのユーザ時間とシステム時間の合計,および呼び出しプロセスが waitまたは systemを実行した,終了済み子プロセスの時間の合計です。
#include <time.h>clock_t clock (void);
秒単位の時間を取得するには, clock関数から返された値を,標準ヘッダ・ファイル <time.h>に定義されている CLK_TCK の値で除算する必要があります。clock_t型は,次に示すように <time.h>ヘッダ・ファイルに定義されています。
typedef long int clock_t;
C メイン・プログラムや,VAXC$CRTL_INIT または DECC$CRTL_INIT を呼び出すプログラムを実行する子プロセスの累積時間だけが含まれます。
clock関数は通常,プログラムが初期設定を終了した後呼び出され,時間を測定する対象となるコードをプログラムが実行した後,再び呼び出されます。その後, 2 つの値の差を求めることにより,経過 CPU 時間が算出されます。
n 使用されたプロセッサ時間。 - 1 使用されたプロセッサ時間を取得できなかったことを示します。
指定されたクロックの精度を取得します。
#include <time.h>int clock_getres (clockid_t clock_id, struct timespec *res);
clock_id
精度を取得するクロックのタイプ。 CLOCK_REALTIME クロックがサポートされています。このクロックは,システムの TIME-OF-DAY クロックです。res
クロックの精度の値を受け取る, timespecデータ構造体へのポインタです。
clock_getres関数は,指定されたクロックの精度の値を取得します。クロックの精度は,実装によって決まり,プロセスが設定することはできません。res 引数が NULL でない場合,指定されたクロックの精度は, res が指す位置に格納されます。
res が NULL の場合,クロックの精度は格納されません。
clock_settimeの時刻引数 (tp) が res の倍数でない場合,この値は res の倍数になるように切り捨てられます。
成功すると,この関数は 0 を返します。
失敗すると,この関数は - 1 を返し,エラーを示す値を errnoに設定します。
clock_gettime, clock_settime, time, ctimeも参照してください。
0 成功を示します。 - 1 失敗を示します。 errno には,次の値が設定されます。
- EINVAL -- clock_id 引数が,既知のクロックを指定していません。
指定されたクロックの現在の時刻 (秒およびナノ秒) を返します。
#include <time.h>int clock_gettime (clockid_t clock_id, struct timespec *tp);
clock_id
設定されているクロックの時刻を取得するために使用されるクロック・タイプ。 CLOCK_REALTIME クロックがサポートされています。このクロックは,システムの TIME-OF-DAY クロックです。tp
timespecデータ構造体へのポインタ。
clock_gettime関数は,指定されたクロック clock_id の現在の tp 値を返します。成功すると,この関数は 0 を返します。
失敗すると,この関数は - 1 を返し,エラーを示す値を errnoに設定します。
clock_getres, clock_settime, time, ctimeも参照してください。
0 成功を示します。 - 1 失敗を示します。 errno には,次の値が設定されます。
- EINVAL -- clock_id 引数が,既知のクロックを指定していません。または, tp 引数が 0 より小さい,または 10 億ナノ秒以上を指定しています。
指定されたクロックへの設定を行います。
#include <time.h>int clock_settime (clockid_t clock_id, const struct timespec *tp);
clock_id
設定対象のクロックのクロック・タイプ。 CLOCK_REALTIME クロックがサポートされています。このクロックは,システムの TIME-OF-DAY クロックです。tp
timespecデータ構造体へのポインタ。
clock_settime関数は,指定されたクロック clock_id に, tp で指定された値を設定します。指定されたクロックの精度の倍数でない時間値は,精度の倍数になるように切り捨てられます。クロックは,システム単位 (つまり,すべてのプロセスから参照できる) のものと,プロセス単位 (計測時間はそのプロセスでのみ意味がある) のもののどちらでも構いません。
<time.h>に定義されている CLOCK_REALTIME クロックは,システムのリアルタイム・クロックです。このクロックでは, clock_settimeで指定する値と clock_gettimeで返される値は,エポックからの経過時間 (秒およびナノ秒) を示します。エポックは,グリニッジ標準時 (GMT) 1970 年 1 月 1 日 00:00:00:00 と定義されています。
clock_settime関数を使用するには,OPER,LOG_IO,および SYSPRV 特権が必要です。
成功すると,この関数は 0 を返します。
失敗すると,この関数は - 1 を返し,エラーを示す値を errnoに設定します。
clock_getres, clock_gettime, time, ctimeも参照してください。
0 成功を示します。 - 1 失敗を示します。 errno には,次の値が設定されます。
- EINVAL -- clock_id 引数が,既知のクロックを指定していません。または, tp 引数が,指定された clock_id の範囲外か, 0 より小さいまたは 10 億ナノ秒以上を指定しています。
- EPERM -- 要求元プロセスには,指定されたクロックに設定を行うための適切な特権がありません。
引数 (複素数) の自然対数 (つまり底を e とした対数) を返します。
#include <complex.h>double complex clog (double complex z);
float complex clogf (float complex z);
long double complex clogl (long double complex z);
z
複素数値。
clog関数は,実軸上の負の領域に分岐線法を適用して,複素数 z の自然対数 (つまり底を e とした対数) を返します。
x 複素数の自然対数値。この値は,実軸上では数学的に無限の範囲,また虚軸上では区間 [-iπ, +iπ] の範囲からなる帯状の領域にあります。
ファイル記述子に関連付けられているファイルをクローズします。
#include <unistd.h>int close (int file_desc);
file_desc
ファイル記述子。
close関数は,暗黙に fflushを呼び出すことにより,バッファに格納されているデータを書き込みます。書き込みが失敗した場合は (たとえば,ディスクが満杯であったり,ユーザのクォータが超過したため), closeは実行を続行します。この関数は OpenVMS チャネルをクローズし,バッファの割り当てを解除し,ファイル記述子 (または FILE ポインタ) に関連付けられているメモリを解放します。バッファに格納されているデータは消失し,ファイル記述子 (または FILE ポインタ) はファイルを参照しなくなります。バッファに格納されているデータを書き込むときに発生したエラーから回復する必要がある場合は, closeを呼び出す前に, fsync(または fflush) を明示的に呼び出す必要があります。
0 ファイルが正しくクローズされたことを示します。 - 1 ファイル記述子が未定義であるか,ファイルのクローズでエラーが発生したことを示します (たとえば,バッファに格納されているデータを書き込むことができないなど)。
#include <unistd.h> int fd; . . . fd = open ("student.dat", 1); . . . close(fd);
ディレクトリをクローズします。
#include <dirent.h>int closedir (DIR *dir_pointer);
dir_pointer
オープンされているディレクトリの dir構造体を指すポインタ。
closedir関数は,ディレクトリ・ストリームをクローズし, dir_pointer 引数に関連付けられている構造体を解放します。関数から戻るときに,dir_pointer の値は必ずしも DIR型のアクセス可能なオブジェクトを示すとは限りません。DIR型は, <dirent.h>ヘッダ・ファイルに定義されており,特定のディレクトリ内のすべてのディレクトリ・エントリを順に並べたシーケンスであるディレクトリ・ストリームを表します。ディレクトリ・エントリはファイルを表します。 readdir関数の操作とは非同期的に,ファイルをディレクトリから削除したり,ディレクトリに追加することができます。
注意
後でディレクトリを正しくオープンすることができるように,オープンされているディレクトリは必ず closedir関数を使用してクローズする必要があります。
次の例では, opendir関数, readdir関数, closedir関数を使用して,ディレクトリからエントリ名を検索する方法を示しています。
#include <dirent.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define FOUND 1 #define NOT_FOUND 0 static int dir_example(const char *name, unsigned int unix_style) { DIR *dir_pointer; struct dirent *dp; if ( unix_style ) dir_pointer = opendir("."); else dir_pointer = opendir(getenv("PATH")); if ( !dir_pointer ) { perror("opendir"); return NOT_FOUND; } /* Note, that if opendir() was called with UNIX style file */ /* spec like ".", readdir() will return only a single */ /* version of each file in the directory. In this case the */ /* name returned in d_name member of the dirent structure */ /* will contain only file name and file extension fields, */ /* both lowercased like "foo.bar". */ /* If opendir() was called with OpenVMS style file spec, */ /* readdir() will return every version of each file in the */ /* directory. In this case the name returned in d_name */ /* member of the dirent structure will contain file name, */ /* file extension and file version fields. All in upper */ /* case, like "FOO.BAR;1". */ for ( dp = readdir(dir_pointer); dp && strcmp(dp->d_name, name); dp = readdir(dir_pointer) ) ; closedir(dir_pointer); if ( dp != NULL ) return FOUND; else return NOT_FOUND; } int main(void) { char *filename = "foo.bar"; FILE *fp; remove(filename); if ( !(fp = fopen(filename, "w")) ) { perror("fopen"); return (EXIT_FAILURE); } if ( dir_example( "FOO.BAR;1", 0 ) == FOUND ) puts("OpenVMS style: found"); else puts("OpenVMS style: not found"); if ( dir_example( "foo.bar", 1 ) == FOUND ) puts("UNIX style: found"); else puts("UNIX style: not found"); fclose(fp); remove(filename); return( EXIT_SUCCESS ); }
0 正常終了を示します。 - 1 エラーを示します。エラーの詳細はグローバルな errno に指定されます。
ウィンドウ内のビデオ表示属性 attr を無効にします。 clrattr関数は stdscrウィンドウに対して動作します。
#include <curses.h>int clrattr (int attr);
int wclrattr (WINDOW *win, int attr);
win
ウィンドウを指すポインタ。attr
ビデオ表示属性 (点滅,太字,反転表示,下線のいずれか)。これらの属性は定義済み定数 _BLINK,_BOLD,_REVERSE, _UNDERLINE によって表されます。複数の属性をクリアするには,次に示すように,ビット単位の OR 演算子 (|) で区切ります。
clrattr(_BLINK | _UNDERLINE);
これらの関数は HP C for OpenVMS システム固有であり,移植できません。
OK 正常終了を示します。 ERR エラーを示します。
| 前へ | 次へ | 目次 | 索引 |