前へ | 次へ | 目次 | 索引 |
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execle (char *file_spec, char *arg0, ..., (char *)0, char *envp[]); (ISO POSIX-1)
int execle (char *file_spec, ...); (Compatability)
file_spec
子プロセスで起動される新しいイメージの完全なファイル指定。arg0, ...
ヌル区切り文字列を指すポインタのシーケンス。POSIX-1 形式を使用する場合は,少なくとも 1 つの引数を指定する必要があり,その引数は新しいプロセス・ファイル名 ( またはその最後のコンポーネント ) と同一である文字列を指さなければなりません ( このポインタは NULL ポインタでも構いませんが,その場合は, execleは何も実行しません )。最後のポインタは NULL ポインタでなければなりません。互換形式を使用するときも,この規則が適用されます。
envp
プログラムの環境を指定する文字列配列。 envp の各文字列は次の形式です。
name = value
name は次の名前のいずれかとして指定でき, value は name に関連付けられるヌル区切り文字列です。
- HOME --- ログイン・ディレクトリ
- TERM --- 使用している端末の種類
- PATH --- デフォルトのデバイスとディレクトリ
- USER --- プロセスを開始したユーザの名前
envp の最後の要素は NULL ポインタでなければなりません。
オペレーティング・システムがプログラムを実行する場合,現在の環境ベクタ (envp) のコピーを外部変数 environ に格納します。
exec関数の動作方法については, execlを参照してください。
- 1 異常終了を示します。
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execlp (const char *file_name, const char *arg0, ..., (char *)0); (ISO POSIX-1)
int execlp (char *file_name, ...); (Compatability)
file_name
子プロセスで起動される新しいイメージのファイル名。ファイルのデバイスおよびディレクトリ指定は, VAXC$PATH 環境名を検索することにより取得されます。argn
ヌル区切り文字列を指すポインタのシーケンス。規則では,少なくとも 1 つの引数を指定しなければならず,その引数は新しいプロセス・ファイル名 ( またはその最後のコンポーネント ) と同一である文字列を指すポインタでなければなりません。...
文字列を指すポインタのシーケンス。リストを終了するために少なくとも 1 つのポインタが必要です。このポインタは NULL でなければなりません。
exec関数の動作方法については, execlを参照してください。
- 1 異常終了を示します。
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execv (char *file_spec, char *argv[]);
file_spec
子プロセスで起動される新しいイメージの完全なファイル指定。argv
ヌル区切り文字列を指すポインタの配列。これらの文字列は,新しいプロセスで使用できる引数リストを構成します。規則では,argv[0] は,新しいプロセス・ファイル名 ( またはその最後のコンポーネント ) と同一である文字列を指すポインタでなければなりません。 argv は NULL ポインタで終了します。
exec関数の動作方法については, execlを参照してください。
- 1 異常終了を示します。
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execve (const char *file_spec, char *argv[], char *envp[]);
file_spec
子プロセスで起動される新しいイメージの完全なファイル指定。argv
ヌル区切り文字列を指すポインタの配列。これらの文字列は新しいプロセスで使用できる引数リストを構成します。規則では,argv[0] は,新しいプロセス・ファイル名 ( またはその最後のコンポーネント ) と同一である文字列を指すポインタでなければなりません。 argv は NULL ポインタで終了します。envp
プログラムの環境を指定する文字列配列。 envp の各文字列は次の形式です。
name = value
name は次の名前のいずれかとして指定でき, value は name に関連付けられるヌル区切り文字列です。
- HOME --- ログイン・ディレクトリ
- TERM --- 使用している端末の種類
- PATH --- デフォルトのデバイスとディレクトリ
- USER --- プロセスを開始したユーザの名前
envp の最後の要素は NULL ポインタでなければなりません。
オペレーティング・システムがプログラムを実行する場合,現在の環境ベクタ (envp) のコピーを外部変数 environ に格納します。
exec関数の動作方法については, execlを参照してください。
- 1 異常終了を示します。
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execvp (const char *file_name, char *argv[]);
file_name
子プロセスで起動される新しいイメージのファイル名。ファイルのデバイスおよびディレクトリ指定は環境名 VAXC$PATH を検索することにより取得されます。argv
ヌル区切り文字列を指すポインタの配列。これらの文字列は新しいプロセスで使用できる引数リストを構成します。規則では,argv[0] は,新しいプロセス・ファイル名 ( またはその最後のコンポーネント ) と同一である文字列を指すポインタでなければなりません。 argv は NULL ポインタで終了します。
exec関数の動作方法については, execlを参照してください。
- 1 異常終了を示します。
関数を呼び出したプログラムの実行を終了します。これらの関数は非リエントラントです。
#include <stdlib.h>void exit (int status);
#include <unistd.h>
void _exit (int status);
status
状態値 EXIT_SUCCESS (0) または EXIT_FAILURE (1),または 2〜255 の数値。
- 状態値 0 または EXIT_SUCCESS は,OpenVMS の SS$_NORMAL 状態コードに変換され, OpenVMS の正常終了値を返します。
- 状態値 1 または EXIT_FAILURE はエラー・レベル終了状態に変換されます。状態値は親プロセスに渡されます。
- 他の状態値はそのまま変更されません。
これらの状態値を使用するには, <unistd.h>を取り込み, _POSIX_EXIT機能テスト・マクロを設定してコンパイルします ( ファイルを取り込む前に,ファイルの先頭に #define _POSIX_EXITを指定するか,または /DEFINE=_POSIX_EXIT を指定します )。この動作が可能なのは, OpenVMS バージョン 7.0 およびそれ以降のシステムの場合だけです。
プロセスが DCL で起動された場合,状態は DCL によって解釈され,メッセージが表示されます。プロセスが vforkまたは exec関数を使用して生成された子プロセスの場合は,子プロセスは終了し,制御は親に返されます。2 つの関数は同じです。 _exit関数が残されているのは, VAX C との互換性を維持するためです。
exit関数と _exit関数では, $EXIT システム・サービスを使用します。ハイバネーションおよびスケジューリングされたウェイクアップ修飾子を使用して RUN コマンドによってプロセスが起動される場合は, exitまたは _exit呼び出しが実行されたときに,プロセスはハイバネーション状態に正しく戻らないことがあります。
注意
EXIT_SUCCESS と EXIT_FAILURE はどの ANSI C コンパイラ間でも移植可能であり,それぞれ正常終了と異常終了を示します。 OpenVMS システムでは,OpenVMS の条件コードに変換され,重大度がそれぞれ正常終了または異常終了に設定されます。子プロセスでは,親プロセスに渡すデータの量を少なくするために, 2〜255 の範囲の値を使用できます。親は wait, wait3, wait4, waitpid関数を使用してこのデータを取得します。
底 e に対する引数のべき乗を返します。
#include <math.h>double exp (double x);
float expf (float x); (Alpha only)
long double expl (long double x); (Alpha only)
double expm1 (double x); (Alpha only)
float expm1f (float x); (Alpha only)
long double expm1l (long double x); (Alpha only)
x
実数値。
exp関数は, e**x として定義される指数関数の値を計算します。ただし,e は自然対数の底として使用される定数です。expm1関数は,x の値が小さい場合でも, exp(x) - 1 を正確に計算します。
オーバフローが発生した場合, exp関数は可能な最大の浮動小数点数値を返し, errnoを ERANGE に設定します。可能な最大の浮動小数点数値を表すために,定数 HUGE_VAL が <math.h>ヘッダ・ファイルに定義されています。
x 引数の指数値。 HUGE_VAL オーバフローが発生したことを示します。 errno は ERANGE に設定されます。 0 アンダフローが発生したことを示します。 errno は ERANGE に設定されます。 NaN x が NaN であることを示します。 errno は EDOM に設定されます。
引数の絶対値を返します。
#include <math.h>double fabs (double x);
float fabsf (float x); (Alpha only)
long double fabsl (long double x); (Alpha only)
x
実数値。
x 引数の絶対値。
ファイルのオーナとグループを変更します。
#include <unistd.h>int fchown (int fildes, uid_t owner, gid_t group);
fildes
オープンされているファイルの記述子。owner
ファイルの新しいオーナに対応するユーザ ID。group
ファイルのグループに対応するグループ ID。
fchown関数は chownと同じ機能を実行しますが,オーナとグループを変更するファイルをファイル記述子 fildes で指定する点が異なります。
0 正常終了を示します。 - 1 異常終了を示します。 errno が次のいずれかの値に設定されます。 次の場合, fchown 関数は 異常終了します。
- EBADF -- fildes 引数がオープンされているファイルの記述子でありません。
- EPERM -- 有効なユーザ ID がファイルのオーナに対応しないか,またはプロセスに適切な特権がありません。
- EROFS -- fildes で参照されるファイルは読み込み専用ファイル・システムに存在します。
次の場合, fchown 関数は 異常終了することがあります。
- EINVAL -- オーナ ID またはグループ ID がインプリメンテーションでサポートされない値です。
- EIO---物理的な I/O エラーが発生しました。
- EINTR -- fchown 関数が検出されたシグナルによって割り込まれました。
ファイル制御ブロックに関連付けられているバッファの内容を出力し,ファイル・ポインタに関連付けられているファイル制御ブロックおよびバッファを解放することにより,ファイルをクローズします。
#include <stdio.h>int fclose (FILE *file_ptr);
file_ptr
クローズするファイルを指すポインタ。
プログラムが正常終了すると,オープンされているすべてのファイルに対して fclose関数が自動的に呼び出されます。fclose関数は, fflushを暗黙に呼び出すことにより,バッファに格納されているデータを書き込もうとします。
書き込みが失敗した場合 (たとえばディスクが満杯の場合や,ユーザのクォータを超えた場合), fcloseは実行を続行します。 OpenVMS チャネルをクローズし,バッファの割り当てを解除し,ファイル記述子 ( または FILE ポインタ ) に関連付けられているメモリを解放します。バッファに格納されているデータは消失し,ファイル記述子 ( または FILE ポインタ ) はファイルを参照しなくなります。
バッファに格納されているデータを書き込むときに発生したエラーから回復する必要がある場合は,プログラムで fcloseを呼び出す前に, fsync(または fflush) を明示的に呼び出さなければなりません。
0 正常終了を示します。 EOF ファイル制御ブロックがオープンされているファイルに関連付けられいていないことを示します。
オープンされているファイルで制御操作を実行します。
#include <sys/types.h>#include <unistd.h>
#include <fcntl.h>
int fcntl (int file_desc, int request [, int file_desc2]);
file_desc
正常終了した open, fcntl, pipe関数から返されたオープン・ファイル記述子。request
実行する操作。file_desc2
request 引数の値に応じて異なる変数。
fcntl関数は,file_desc 引数によって指定される,オープンされているファイルに対して制御操作を実行します。request 引数の値は,ヘッダ・ファイル <fcntl.h>に定義されています。次の値が定義されています。
F_DUPFD int 型の整数として受け付けられる 3 番目の引数 ( file_desc2) に等しいか,またはそれ以上で,使用可能な ( つまりまだオープンされていない ) ファイル記述子のうち,最小の新しいファイル記述子を返します。 新しいファイル記述子は元のファイル記述子 ( file_desc) と同じファイルを参照します。新しいファイル記述子に関連付けられる FD_CLOEXEC フラグは, exec 関数のいずれかの呼び出しでファイルをオープンしたままにしておくためにクリアされます。
次の 2 つの呼び出しは同じです。
fid = dup(file_desc);
fid = fcntl(file_desc, F_DUPFD, 0);
次の呼び出しがあるとします。
fid = dup2(file_desc, file_desc2);
これは,次の呼び出しに類似しています ( ただし,同じではありません )。
close(file_desc2);
fid = fcntl(file_desc, F_DUPFD, file_desc2);
F_GETFD ファイル記述子 file_desc に関連付けられている close-on-exec フラグの値を取得します。ファイル記述子フラグは,1 つのファイル記述子に関連付けられ,同じファイルを参照する他のファイル記述子には影響を与えません。 file_desc2 引数は指定しないでください。 F_SETFD file_desc に関連付けられている close-on-exec フラグを 3 番目の引数の値に設定します。この引数は int 型です。 3 番目の引数が 0 の場合は,ファイルは exec 関数の呼び出しでオープンされたままになります。つまり, exec 関数から生成された子プロセスは,親からこのファイル記述子を継承します。
3 番目の引数が FD_CLOEXEC の場合は,次の exec 関数の実行が正常終了したときに,ファイルはクローズされます。つまり, exec 関数で生成された子プロセスは,親からこのファイル記述子を継承しません。
n 正常終了時に返される値は,次に示すように, request 引数の値に応じて異なります。
- F_DUPFD ---新しいファイル記述子を返します。
- F_GETFD ---FD_CLOEXEC または 0 を返します。
- F_SETFD --- - 1 以外の値を返します。
- 1 エラーが発生したことを示します。 errno は以下のいずれかの値に設定されます。
- EBADF--- file_desc 引数が有効なオープンされているファイル記述子ではなく, file_desc2 引数が負の値であるか,またはプロセス単位のリミットに等しいか,それ以上の値です。
- EFAULT--- file_desc2 引数が不正なアドレスです。
- EINVAL--- request 引数が F_DUPFD であり, file_desc2 引数が負の値であるか,または OPEN_MAX に等しいか,それより大きな値です。
OPEN_MAX の値またはプロセス単位のソフト記述子リミットが確認されます。
不正な値が request 引数に対して指定されました。
- EMFILE--- request 引数が F_DUPFD であり,呼び出しプロセスで現在 OPEN_MAX 個のファイル記述子がオープンされています。または, file_desc2 引数以上のファイル記述子を使用することはできません。
OPEN_MAX の値またはプロセス単位のソフト記述子リミットが確認されます。
- ENOMEM---システムは要求されたファイル記述子に対してメモリを割り当てることができませんでした。
前へ | 次へ | 目次 | 索引 |