日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
open |
読み込み,書き込み,または編集のためにファイルをオープンします。ファイルの位置は先頭 (バイト 0) に設定されます。
#include <fcntl.h>int open (const char *file_spec, int flags, mode_t mode); (ANSI C)
int open (const char *file_spec, int flags, ...); (HP C Extension)
file_spec
有効なファイル指定を含んでいる,null で終わる文字列。 file_spec でディレクトリを指定し,それがエラーを含んだ検索リストだった場合, HP C はそれをファイル・オープン・エラーとして解釈します。file_spec パラメータの指しているファイルがシンボリック・リンクである場合は,そのシンボリック・リンクで参照されているファイルをオープンします。
flags
<fcntl.h>ヘッダ・ファイルには以下の値が定義されています。
O_RDONLY 読み込み専用でオープンする O_WRONLY 書き込み専用でオープンする O_RDWR 読み書き用にオープンする O_NDELAY 非同期入力用にオープンする O_APPEND 各書き込みで追加する O_CREAT 存在しない場合にはファイルを作成する O_TRUNC このファイルの新しいバージョンを作成する O_EXCL 既存のファイルの作成を試みた場合にはエラーとする
これらのフラグは,ビット論理和演算子 (|) で指定されたフラグを区切ることによって設定します。
O_APPENDを指定してファイルをオープンすると,ファイルに対する個々の書き込みはファイルの終端に付加されます ( 一方,VAX C RTL では,付加モードでファイルをオープンすると, EOF で書き込みが開始され,その後は現在のファイル位置に書き込みが行われていました )。
O_TRUNCが指定され,ファイルが存在していた場合, openはバージョン番号を 1 だけ増やして新しいファイルを作成し,古いバージョンはそのまま残します。
O_CREATが設定されており,指定されたファイルが存在しなかった場合, HP C RTL は 4 番目とそれ以降の引数 (...) で指定されたすべての属性を持つファイルを作成します。 O_EXCLが O_CREATとともに設定されており,指定されたファイルが存在していた場合,オープンの試みはエラーを返します。
mode
ファイル保護モードを指定する符号なしの値。コンパイラは,モードと,現在の保護モードの補数に対してビット論理積演算を実行します。モードは,ビット論理和演算子 (|) で指定されたモードを区切ることによって作成します。以下のモードがあります。
0400 OWNER:READ 0200 OWNER:WRITE 0100 OWNER:EXECUTE 0040 GROUP:READ 0020 GROUP:WRITE 0010 GROUP:EXECUTE 0004 WORLD:READ 0002 WORLD:WRITE 0001 WORLD:EXECUTE
システムには,オーナと同じアクセス特権が与えられます。 WRITE 特権は DELETE 特権も暗黙のうちに含んでいます。
...
オプションのファイル属性引数。ファイル属性引数は, creat関数で使用されるものと同じです。詳細については, creat関数を参照してください。
ファイルの何らかのバージョンが存在する場合, openで作成された新しいファイルは, open呼び出しで指定されていない限り,特定の属性を既存のファイルから継承します。継承される属性は,レコード形式,最大レコード・サイズ,キャリッジ・コントロール,およびファイル保護です。
注意
- ファイルに対するランダム書き込みを行う場合,ファイルは O_RDWRの flags 値を指定することで,更新用にオープンしなくてはならない。
- UNIX システム・コール関数 umask, mkdir, creat,および openを使って, OpenVMS RMS デフォルト保護を指定してファイルを作成するには, umaskを直接呼び出さないプログラムから, 0777 のファイル保護モード引数を使用して mkdir, creat, および openを呼び出す。これらのデフォルト保護では,ACL やファイルの前のバージョンなどに基づいて,保護が正しく設定される。
vfork/ exec呼び出しを行うプログラムでは,新しいプロセス・イメージは, umaskが呼び出されたかどうかの状態を,呼び出し元のプロセス・イメージから継承します。 umask設定と, umask関数が呼び出されたかどうかの状態は,どちらも属性として継承されます。
creat, read, write, close, dup, dup2, および lseekも参照してください。
x 負でないファイル記述子番号。 -1 ファイルが存在しない,読み込みまたは書き込みから保護されている,またはその他の理由からオープンできないことを示します。
#include <unixio.h> #include <fcntl.h> #include <stdlib.h> main() { int file, stat; int flags; flags = O_RDWR; /* Open for read and write, */ /* with user default file protection, */ /* with max fixed record size of 2048, */ /* and a block size of 2048 bytes. */ file=open("file.dat", flags, 0, "rfm=fix", "mrs=2048", "bls=2048"); if (file == -1) perror("OPEN error"), exit(1); close(file); }
目次 | 索引 |
|