日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

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


目次 索引




新しいファイルを作成します。

形式

#include <fcntl.h>

int creat (const char *file_spec, mode_t mode); (ISO POSIX-1)

int creat (const char *file_spec, mode_t mode, ...); (HP C Extension)


引数



file_spec

有効なファイル指定を格納したヌル区切り文字列。

mode

ファイル保護モードを指定する符号なし値。コンパイラはモードおよび現在の保護モードの補数に対してビット単位の AND 操作を実行します。

モードを作成するには,ビット単位の OR 演算子 (|) を使用してモードの組み合わせを作成します。モードは次のとおりです。

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 特権もあるものと解釈されます。

  注意
UNIX システム呼び出し関数 umaskmkdircreatopenを使用して, OpenVMS RMS のデフォルト保護でファイルを作成するには, umaskを絶対に呼び出すことがないプログラムでファイル保護モード引数を 0777 に設定して, mkdircreatopenを呼び出します。これらのデフォルト保護には, ACL やファイルの前のバージョンなどをもとに正しく設定された保護が含まれます。

vfork/ execを呼び出すプログラムでは,新しいプロセス・イメージは, umaskが呼び出しプロセス・イメージから呼び出されたかどうかを継承します。 umaskの設定と, umask関数がこれまで呼び出されたかどうかは,どちらも継承される属性です。



...

次の形式の文字列で構成される省略可能な引数リスト。

"keyword = value",...,"keyword = value" 

"acc" または "err" の場合は,次の形式になります。

"keyword" 

ここで,keyword はファイル・アクセス・ブロック (FAB) またはレコード・アクセス・ブロック (RAB) の RMS フィールドです。 value はそのフィールドに代入できる有効な値です。一部のフィールドには,複数の値を指定できます。このような場合,値はコンマで区切ります。

RMS コールバック・キーワード "acc" と "err" だけは値を受け付けないキーワードです。これらのキーワードの後には,使用するコールバック・ルーチンを指すポインタを指定し,さらにコールバック・ルーチンの最初の引数として使用されるユーザ指定値を指すポインタを指定します。たとえば, acc_callbackというアクセス・コールバック・ルーチンを設定し,そのルーチンの最初の引数が openの呼び出しの整数変数 first_argを指すポインタの場合,次の文を使用できます。

open("file.dat", O_RDONLY, 0 ,"acc", acc_callback, &first_arg) 

コールバック・ルーチンに対する 2 番目の引数と 3 番目の引数はそれぞれ, FAB と RAB を指すポインタでなければならず,ルーチンの戻り値の型は intでなければなりません。コールバックが 0 より小さい値を返す場合は, opencreatfopenは異常終了します。エラー・コールバックはエラー条件を修正し,0 以上の状態を返すことにより, creat呼び出しを続行できます。上記の open文を例にとってみると, acc_callbackの関数プロトタイプは次の文のようになります。

#include <rms.h> 
 
int acc_callback(int *first_arg, struct FAB *fab, struct RAB *rab); 

FAB と RAB は <rms.h>ヘッダ・ファイルに定義されており,ルーチンに渡される実際のポインタは,ファイル file.dat をオープンするために使用される RAB と FAB を指すポインタです。

アクセス・コールバック・ルーチンが確立された後,このルーチンは, RMS 関数 sys$create または sys$open を呼び出す直前に,オープン・タイプのルーチンで呼び出されます。エラー・コールバック・ルーチンが確立され, sys$create または sys$open 関数からエラー状態が返された場合は,状態が確認され,エラー値が検出された直後に,コールバック・ルーチンが呼び出されます。

  注意
コールバック関数で RAB または FAB を操作すると,その後の HP C RTL I/O 関数の呼び出しで重大な問題が発生する可能性があります。

表 1-3 は RMS キーワードと値を示しています。

表 1-3 RMS の有効なキーワードと値
キーワード 説明
"acc" コールバック アクセス・コールバック・ルーチン。
"alq = n" 10 進数 割り当て数量。
"bls = n" 10 進数 ブロック・サイズ。
"ctx = bin" 文字列 '\n' を変換せずに端末に出力する。バイナリ・データをファイルに書き込むときはこのキーワードを使用する。
"ctx = cvt" 文字列 "ctx=nocvt" の前の設定を否定する。これはデフォルトである。
"ctx = nocvt" 文字列 Fortran のキャリッジ制御バイトを変換しない。
"ctx = rec" 文字列 レコード・モード・アクセスを強制する。
"ctx = stm" 文字列 ストリーム・モード・アクセスを強制する。
"ctx = xplct" 文字列 fflush close fclose の呼び出しによって明示的に指定された場合にだけ,レコードを書き込む。
"deq = n" 10 進数 デフォルトの拡張数量。
"dna = filespec" 文字列 デフォルトのファイル名文字列。
"err" コールバック エラー・コールバック・ルーチン。
"fop = val, val ,..."   ファイル処理オプション:
  ctg
cbt
dfw

dlt
tef
cif
sup
scf
spl
tmd
tmp
nef
rck
wck
mxv
rwo
pos
rwc
sqo
連続。
連続最適トライ。
遅延書き込み。共用アクセスのためにオープンされたファイルにだけ適用される。
クローズ時にファイルを削除する。
EOF で切り捨てる。
存在しない場合は作成する。
現在は使用されていない。
クローズ時にコマンド・ファイルとしてサブミットする。
クローズ時にシステム・プリンタにスプールする。
一時的に削除する。
一時的 (ファイル・ディレクトリでない)。
EOF でない。
読み込みチェック比較操作。
書き込みチェック比較操作。
バージョン番号を最大にする。
オープン時にファイルを巻き戻す。
現在の位置。
クローズ時にファイルを巻き戻す。
ファイルは順次処理だけが可能である。
"fsz = n" 10 進数 固定ヘッダ・サイズ。
"gbc = n" 10 進数 ファイルに対して要求されたグローバル・バッファの数。
"mbc = n" 10 進数 マルチブロック・カウント。
"mbf = n" 10 進数 マルチバッファ・カウント。
"mrs = n" 10 進数 最大レコード・サイズ。
"pmt=usr-prmpt" 文字列 端末入力を促すプロンプト。このオプションと "rop=pmt" が指定されている場合は,端末デバイスからの RMS 入力の前に "usr-prmpt" が付加される。
"rat = val, val..."   レコード属性:
  cr
blk
ftn
none
prn
キャリッジ・リターン制御。
レコードがブロック境界にまたがることを禁止する。
Fortran プリント制御。
明示的にキャリッジ制御なしを強制する。
ファイル・フォーマットをプリントする。
"rfm = val"   レコード・フォーマット:
  fix
stm
stmlf
stmcr

var
vfc
udf
固定長レコード・フォーマット。
RMS ストリーム・レコード・フォーマット。
改行区切り文字付きストリーム・フォーマット。
キャリッジ・リターン区切り文字付きストリーム・フォーマット。
可変長レコード・フォーマット。
固定長制御部付き可変長レコード。
未定義。
"rop = val, val..."   レコード処理操作:
  asy 非同期 I/O。
  cco Ctrl/O をキャンセルする (端末 I/O で使用)。
  cvt 端末からの読み込み時に文字を大文字に変換する。
  eof 接続操作の場合のみ,レコード・ストリームを EOF に設定する。
  nlk レコードをロックしない。
  pmt 端末からの入力時に "pmt=usr-prmpt" によって指定されるプロンプトの使用を有効にする。
  pta 端末からの読み込み時に先読みバッファの情報を消去する。
  rea このプロセスに対して読み込み操作のためにレコードをロックするが,他のプロセスがレコードを読み込むことは許可する。
  rlk 書き込みのためにレコードをロックする。
  rne キーボードからの入力時に,入力データの画面表示を行わない。
  rnf 端末入力で Ctrl/U,Ctrl/R,DELETE が制御コマンドとして解釈されないが,アプリケーション・プログラムに渡されることを示す。
  rrl ロックとは無関係に読み込む。
  syncsts 要求されたサービスがタスクをただちに完了したときに,RMS$_SYNCH という正常終了状態を返す。
  tmo I/O 時間切れ。
  tpt 順次レコード・アクセス・モードを使用する put/write サービスがファイルの任意のポイントで発生することを許可し,そのポイントでファイルを切り捨てる。
  ulk RMS が自動的にレコードのロックを解除することを禁止する。
  wat レコードが現在別のストリームによってロックされている場合,そのレコードが使用可能になるまで待つ。
  rah 先読みする。
  wbh 後書きする。
"rtv=n" 10 進数 RMS がメモリ内で管理しなければならない検索ポインタの数 (0〜127,255)。
"shr = val, val, ..."   ファイル共用オプション:
  del
get
mse
nil
put
upd
upi
nql
ユーザによる削除を許可する。
ユーザによる読み込みを許可する。
マルチストリーム接続を許可する。
ファイルの共用を禁止する。
ユーザによる書き込みを許可する。
ユーザによる更新を許可する。
1 人以上のユーザによる書き込みを許可する。
クエリ・ロックを行わない (ファイル・レベル)。
"tmo = n" 10 進数 I/O 時間切れの値。

これらのオプションの他に,キー値を受け付けるオプション ("fop" や "rat" など) は,値の前に "no" を付けることにより否定することができます。たとえば, "fop=notmp" と指定すると, "fop" フィールドの "tmp" ビットがクリアされます。

  注意

  • これらのオプションは柔軟性と機能性を向上しますが,多くのオプションは,正しく使用しないと,重大な問題を引き起こす危険性があります。

  • デフォルトの HP C for OpenVMS ストリーム・ファイル I/O を共用することはできません。ファイルを共用する場合は,"ctx=rec" を指定して,強制的にレコード・アクセス・モードに設定する必要があります。また,目的のアクセス・タイプに応じて,適切な "shr" オプションも指定しなければなりません。

  • 追加のためにオープンされているファイルを共用する場合は,適切な共用オプションとレコード・ロック・オプションを指定して,同じファイルにアクセスする他のプロセスがレコードを読み込むことができるようにしなければなりません。この処理が必要なのは, EOF に到達するまでレコードをループで読み込むことにより,ファイルが EOF の位置に設定されるからです。

これらのオプションの詳細については,『『OpenVMS Record Management Services Reference Manual』』を参照してください。


説明

HP C RTL は読み込みと書き込みのために新しいファイルをオープンし,対応するファイル記述子を返します。

ファイルが存在する場合:

  • 既存のバージョンより 1 だけ大きいバージョン番号が新規作成されたファイルに割り当てられます。

  • デフォルト設定により,新しいファイルは既存のファイル・バージョンから特定の属性を継承します。ただし, creat呼び出しに指定された属性は継承しません。次の属性が継承されます。

    • レコード・フォーマット (FAB$B_RFM)

    • 最大レコード・サイズ (FAB$W_MRS)

    • キャリッジ制御 (FAB$B_RAT)

    • ファイル保護

  • 新しいバージョンのファイルを作成するときに,そのファイルと同じ名前のシンボリック・リンクがすでに存在していると,そのシンボリック・リンクが参照しているファイルが作成されます。

ファイルが存在しない場合:

  • mode 引数および現在の保護マスクの補数に対してビット単位の AND を実行することにより作成されるファイル保護が与えられます。

  • デフォルト設定により,ライン・フィード・レコード・セパレータと暗黙のキャリッジ・リターン属性が割り当てられたストリーム・フォーマットが設定されます。

このセクションの openclosereadwritelseekも参照してください。


戻り値

n ファイル記述子。
-1    保護違反,未定義ディレクトリ,ファイル属性の競合などのエラーを示します。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.