日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル

OpenVMS マニュアル


≫ 

OpenVMS V8.3
ライブラリ

タイトル
目次
まえがき
第 1 章:リファレンス・セクション
索引
PDF
OpenVMS ホーム

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


目次 索引




読み込み,書き込み,または編集のためにファイルをオープンします。ファイルの位置は先頭 (バイト 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_EXCLO_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_RDWRflags 値を指定することで,更新用にオープンしなくてはならない。

  • 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); 
} 


目次 索引

印刷用画面へ
プライバシー 本サイト利用時の合意事項