library home hp.com home products and services support and drivers solutions
cd-rom home
End of Jump to page title
HP OpenVMS Systems
Documentation

Jump to content


HP OpenVMS

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


前へ 次へ 目次 索引



seekdir

ディレクトリ・ストリームの位置を設定します。

形式

#include <dirent.h>

void seekdir (DIR *dir_pointer, long int location);


引数

dir_pointer

オープン・ディレクトリの dir構造体へのポインタ。

location

ディレクトリの先頭を基準としたエントリの番号。

説明

seekdir関数は, dir_pointer によって指定されたディレクトリ・ストリーム上の次の readdir操作の位置を, location によって指定された位置に設定します。 location の値は,以前の telldir の呼び出しから返されたものです。

location の値が以前の telldir関数の呼び出しから返されたものでない場合,またはこのディレクトリ・ストリームに対する rewinddir関数の呼び出しが途中で行われていた場合の効果は定められていません。

<dirent.h>ヘッダ・ファイルに定義されている DIR型は,ディレクトリ・ストリームを表します。ディレクトリ・ストリームとは,特定のディレクトリ内のすべてのディレクトリ・エントリの順序付きのシーケンスです。ディレクトリ・エントリはファイルを表します。 readdir関数の操作とは非同期的に,ディレクトリのファイルの削除や追加を行うことができます。

readdirrewinddir,および telldirを参照してください。


[w]setattr

ウィンドウ内でビデオ表示属性 attr を有効にします。 setattr関数は stdscrウィンドウに作用します。

形式

#include <curses.h>

int setattr (int attr);

int wsetattr (WINDOW *win, int attr);


引数

win

ウィンドウへのポインタ。

attr

点滅,ボールド,反転ビデオ,および下線のビデオ表示属性。それぞれ定義済み定数 _BLINK,_BOLD,_REVERSE,および _UNDERLINE によって表現されます。次のようにビット論理和演算子 (|) で区切ることで,複数の属性を設定することができます。


setattr(_BLINK | _UNDERLINE); 


説明

setattrおよび wsetattr関数は HP C for OpenVMS システムに固有のもので,移植性はありません。

戻り値

OK 成功を示します。
ERR エラーを示します。


setbuf

入力ファイルまたは出力ファイルに新しいバッファを関連付けます。バッファリングの動作を変更することもあります。

形式

#include <stdio.h>

void setbuf (FILE *file_ptr, char *buffer);


引数

file_ptr

ファイル・ポインタ。

buffer

文字配列へのポインタ,または NULL ポインタ。

説明

setbuf関数は,指定されたファイルがオープンされた後,ただし I/O 操作が実行される前に使用することができます。

buffer が NULL ポインタである場合,この呼び出しは,同じ file_ptr,NULL の buffer ポインタ, _IONBF のバッファリング・タイプ (バッファリングなし),およびバッファ・サイズ 0 を指定する setvbuf呼び出しと等価です。

buffer が NULL ポインタでない場合,この呼び出しは,同じ file_ptr,同じ buffer ポインタ, _IOFBF のバッファリング・タイプ,および値 BUFSIZ ( <stdio.h>に定義) で指定されるバッファ・サイズを指定する setvbuf呼び出しと等価です。したがって, setbufの呼び出しで使用する buffer 引数を割り当てるときには BUFSIZ を使用するようにします。次に例を示します。


#include <stdio.h> 
   .
   .
   .
char my_buf[BUFSIZ]; 
   .
   .
   .
setbuf(stdout, my_buf); 
   .
   .
   .

ユーザ・プログラムは,ストリームに対して I/O が実行された後には, buffer の内容に依存してはなりません。 HP C RTL は,どの I/O 操作についても, buffer を使用する場合と使用しない場合があります。

もともと setbuf関数は,古いバージョンの UNIX のシステム・デフォルト・バッファの代わりに,プログラマが大きなバッファを割り当てられるようにすることを目的としていました。現在の C の実装では,デフォルト・バッファ・サイズが大きいため,この関数はほとんどのケースでは不要です。 setbuf関数は,ANSI C 標準では,古いプログラムとの互換性のために残されています。新規のプログラムでは,代わりに setvbufを使用するようにしてください。この関数では,プログラマはコンパイル時ではなく実行時にバッファ・サイズをバインドすることができますし,テスト可能な結果値が返されます。


setenv

現在の環境リストの name で指定された環境変数を挿入または再設定します。

形式

#include <stdlib.h>

int setenv (const char *name, const char *value, int overwrite);


引数

name

環境変数リストの中の変数名。

value

環境変数の値。

overwrite

環境変数が存在していた場合,それを再設定するかどうかを示す 0 または 1 の値。

説明

setenv関数は,現在の環境リストの環境変数 name を挿入または再設定します。リストに変数 name が存在しなければ, value 引数を使って挿入されます。変数が存在していれば,overwrite 引数がテストされます。 overwrite 引数の値に応じて,次の処理が行われます。


戻り値

0 成功を示します。
- 1 エラーを示します。 errno は ENOMEM に設定されます。環境リストを拡張するのに十分なメモリがありません。


seteuid (Alpha, I64)

プロセスの実効ユーザ ID を設定します。

形式

#include <unistd.h>

int seteuid (uid_t euid);


引数

euid

実効ユーザ ID として設定する値。

説明

プロセスに IMPERSONATE 特権がある場合, seteuid関数は,プロセスの実効ユーザ ID を設定します。

特権のないプロセスは,euid 引数がプロセスの実ユーザ ID,実効ユーザ ID,保存済みユーザ ID のいずれかと同じ場合にのみ,実効ユーザ ID を設定できます。


戻り値

0 成功を示します。
- 1 エラーを示します。この関数は,次のいずれかの値を errno に設定します。

  • EINVAL -- euid 引数の値が不正,またはサポートされていません。

  • EPERM -- プロセスに IMPERSONATE 特権がなく, euid が実ユーザ ID と保存済みセット・ユーザ ID のどちらとも一致しません。


setgid

POSIX ID が無効化されている場合には,プログラムの移植性のために setgidが実装されており,何の機能も持ちません。成功を示す 0 を返します。

POSIX ID が有効になっている場合には, setgidはグループ ID を設定します。


形式

#include <types.h>

#include <unistd.h>

int setgid (__gid_t gid); (_DECC_V4_SOURCE)

int setgid (gid_t gid); (not _DECC_V4_SOURCE)


引数

gid

グループ ID に設定する値。

説明

setgid関数は, POSIX スタイル識別子が有効の場合でも無効の場合でも使用できます。

POSIX 形式の ID は, OpenVMS Version 7.3-2 およびそれ以降でサポートされています。

POSIX ID が無効化されている場合, setgid関数はプログラムの移植性のために実装されており,何の機能も持ちません。成功を示す 0 を返します。

POSIX ID が有効になっている場合には,次の処理が行われます。

POSIX 形式の ID を有効または無効にする方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.7 節を参照してください。


戻り値

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

  • EINVAL -- gid 引数の値が無効で,実装によってサポートされていない。

  • EPERM -- プロセスは適切な特権を持っておらず, gid は実グループ ID または保存済みセット・グループ ID と一致しない。


setgrent (Alpha, I64)

グループ・データベースをリワインドします。

形式

#include <grp.h>

void setgrent (void);


説明

setgrent関数は,グループ・データベースを実質的にリワインドし,検索を繰り返し実行できるようにします。

この関数は,必ず成功します。戻り値はありません。また, errnoも設定されません。


setitimer

インターバル・タイマの値を設定します。

形式

#include <time.h>

int setitimer (int which, struct itimerval *value, struct itimerval *ovalue);


引数

which

インターバル・タイマのタイプ。 HP C RTL は ITIMER_REAL のみをサポートしています。

value

タイマ・インターバルとインターバルの終わりまでの残り時間をメンバとして含んでいる itimerval構造体へのポインタ。

ovalue

現在のタイマ・インターバルとインターバルの終わりまでの残り時間をメンバとして含んでいる itimerval構造体へのポインタ。

説明

setitimer関数は,which で指定されたタイマを value で指定された値に設定し, ovalue がゼロ以外の値であれば,タイマの前の値を返します。

タイマ値は itimerval構造体によって定義されます。


       struct itimerval { 
               struct  timeval it_interval; 
               struct  timeval it_value; 
       }; 

itimerval構造体のメンバの値は以下のとおりです。

itimerval メンバの値 意味
it_interval = 0 次にタイマが満了したときにタイマを無効化する ( it_value がゼロ以外の値である場合)。
it_interval = ゼロ以外 タイマが満了したときに, it_value の再ロードに使用される値を指定する。
it_value = 0 タイマを無効化する。
it_value = ゼロ以外 次にタイマが満了するまでの残り時間を示す。

システム・クロックの解像度よりも小さいタイマ値は,この解像度にまで丸められます。

getitimer関数は, <time.h>ヘッダ・ファイルに ITIMER_REAL として定義されている 1 つのインターバル・タイマを提供しています。このタイマはリアル・タイムでデクリメントします。タイマが満了すると,SIGALARM シグナルが送信されます。

注意

setitimerと, alarmsleep,または usleepの間の相互作用は定められていません。


戻り値

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


setjmp

ネストした一連の関数呼び出しから,通常の方法を使わずに,つまり一連の return文を使用せずに,定義済みのポイントに制御を移すための手段を提供します。 setjmp関数は,呼び出し元関数のコンテキストを環境バッファに保存します。

形式

#include <setjmp.h>

int setjmp (jmp_buf env);


引数

env

環境バッファ。呼び出し元の関数のレジスタ・コンテキストを保持するのに十分な長さを持つ整数の配列でなくてはなりません。 jmp_buf型は <setjmp.h>ヘッダ・ファイルに定義されています。このバッファには,プログラム・カウンタ (PC) を含む汎用レジスタの内容が格納されます。

説明

setjmpは,初めて呼び出されたときには値 0 を返します。その後, setjmpの呼び出しと同じ環境を指定して longjmpを呼び出すと,制御は通常どおりに返ったかのように再び setjmp呼び出しに戻されます。この 2 回目のリターンにおける setjmpの戻り値は, longjmp呼び出しで指定された値です。 setjmpの真の値を保存するためには,対応する longjmpが呼び出されるまで, setjmpを呼び出す関数を再び呼び出さないようにする必要があります。

setjmp関数はハードウェア汎用レジスタを保存し, longjmp関数はそれらを復元します。 longjmpの後には, volatileとしてマークされていないローカル自動変数を除くすべての変数が, longjmpの時点の値を持つようになります。 volatileとしてマークされていないローカル自動変数の値は不定です。

setjmpおよび longjmp関数は, OpenVMS 条件処理機能を使用して,シグナル・ハンドラによる非ローカル goto を実現します。 longjmp関数は, HP C RTL 指定のシグナルを生成し, OpenVMS 条件処理機能がデスティネーションに戻れるようにすることで実装されています。

HP C RTL は,任意の HP C イメージのシグナル処理を制御できなくてはなりません。 HP C がシグナル処理を制御できるようにするためには,すべての例外処理を VAXC$ESTABLISH関数の呼び出しを通して設定しなくてはなりません。詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 4.2.5 項と, VAXC$ESTABLISH関数を参照してください。

注意

Alpha システムと I64 システムの C RTL には,標準とは異なる decc$setjmp関数と decc$fast_longjmp関数が用意されています。標準関数の代わりにこれらの非標準関数を使用するためには,プログラムを __FAST_SETJMP または __UNIX_SETJMP マクロを定義してコンパイルする必要があります。

標準の longjmp関数とは異なり, decc$fast_longjmp関数は第 2 引数を 0 から 1 に変換しません。 decc$fast_longjmpの呼び出しの後,対応する setjmp関数は, decc$fast_longjmp呼び出しで指定された第 2 引数とまったく同じ値で返ります。


制限事項

OpenVMS 条件ハンドラから longjmp関数を呼び出すことはできません。ただし,以下のネスト制約の範囲内で, HP C RTL がサポートしている任意のシグナルに対して確立されたシグナル・ハンドラから longjmpを呼び出すことができます。


戻り値

説明のセクションを参照してください。


前へ 次へ 目次 索引