_sopen、_wsopen
更新 : 2007 年 11 月
ファイルを共有用に開きます。これらの関数のセキュリティを強化したバージョンについては、「_sopen_s、_wsopen_s」を参照してください。
int _sopen(
const char *filename,
int oflag,
int shflag [,
int pmode ]
);
int _wsopen(
const wchar_t *filename,
int oflag,
int shflag [,
int pmode ]
);
パラメータ
filename
ファイル名。oflag
許可される操作の種類。shflag
可能な共有の種類。pmode
権限の設定。
戻り値
これらの関数は、開いたファイルのファイル記述子を返します。
filename または oflag が NULL ポインタの場合、あるいは oflag または shflag が値の有効範囲内にない場合、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラが呼び出されます。実行の継続が許可された場合、これらの関数は -1 を返し、errno を次のいずれかの値に設定します。
EACCES
指定されたパスがディレクトリであるか、または読み取り専用のファイルを書き込み操作用に開こうとしました。EEXIST
_O_CREAT フラグと _O_EXCL フラグが指定されましたが、filename は既に存在します。EINVAL
oflag 引数または shflag 引数が無効です。EMFILE
使用できるファイル記述子がありません。ENOENT
ファイル名またはパス名が見つかりません。
リターン コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
解説
_sopen 関数は、filename で指定されたファイルを開き、oflag および shflag で定義されているように、そのファイルを共有読み取りまたは共有書き込み用に準備します。ワイド文字を扱う場合は、_sopen ではなく _wsopen を使用します。_wsopen の場合、filename 引数にはワイド文字列を指定します。引数の指定以外では、_wsopen と _sopen の動作は同じです。
汎用テキスト ルーチンのマップ
Tchar.h のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tsopen |
_sopen |
_sopen |
_wsopen |
oflag は、Fcntl.h ファイルで定義されている次の 1 つ以上のマニフェスト定数を組み合わせて構成される整数式です。oflag 引数が複数の定数で構成されている場合は、ビットごとの OR 演算子 ( |) で結合されます。
_O_APPEND
書き込み操作が行われるたびに、事前にファイル ポインタをファイルの終端に移動します。_O_BINARY
ファイルをバイナリ (無変換) モードで開きます。バイナリ モードの詳細については、「fopen、_wfopen」を参照してください。_O_CREAT
書き込み用の新規ファイルを作成して開きます。filename で指定したファイルが存在する場合は無効です。_O_CREAT を指定する場合は、pmode 引数が必要です。_O_CREAT| _O_SHORT_LIVED
ファイルを一時ファイルとして作成し、可能な場合はディスクにフラッシュしません。_O_CREAT を指定する場合は、pmode 引数が必要です。_O_CREAT| _O_TEMPORARY
ファイルを一時ファイルとして作成します。最後のファイル記述子が閉じられると、ファイルは削除されます。_O_CREAT を指定する場合は、pmode 引数が必要です。_O_CREAT| _O_EXCL
filename で指定されたファイルが存在する場合は、エラー値を返します。_O_CREAT と共に使用する場合にだけ適用されます。_O_NOINHERIT
共有ファイル記述子の作成を禁止します。_O_RANDOM
主にディスクからのランダム アクセスを指定します。_O_RDONLY
ファイルを読み取り専用で開きます。_O_RDWR または _O_WRONLY を指定した場合、この定数は使用できません。_O_RDWR
ファイルを読み取りと書き込みの両用で開きます。_O_RDONLY または _O_WRONLY を指定した場合、この定数は使用できません。_O_SEQUENTIAL
主にディスクからの順次アクセスを指定します。_O_TEXT
ファイルをテキスト (変換) モードで開きます。詳細については、「テキスト モードとバイナリ モードのファイル入出力」および「fopen」を参照してください。_O_TRUNC
ファイルを開き、長さ 0 まで切り捨てます。ファイルには書き込み許可が必要です。このフラグは、_O_RDONLY と共に指定できません。_O_CREAT と共に _O_TRUNC を使用すると、既存のファイルが開かれるか、新しいファイルが作成されます。メモ : _O_TRUNC フラグを設定すると、指定したファイルの内容が破棄されます。
_O_WRONLY
ファイルを書き込み専用で開きます。_O_RDONLY または _O_RDWR を指定した場合、この定数は使用できません。_O_U16TEXT
ファイルを Unicode UTF-16 モードで開きます。このオプションは、Visual C++ 2005 で使用できます。_O_U8TEXT
ファイルを Unicode UTF-8 モードで開きます。このオプションは、Visual C++ 2005 で使用できます。_O_WTEXT
ファイルを Unicode モードで開きます。このオプションは、Visual C++ 2005 で使用できます。
ファイル アクセス モードを指定するには、_O_RDONLY、_O_RDWR、または _O_WRONLY のいずれかを指定する必要があります。アクセス モードの既定値はありません。
_O_WRONLY|_O_APPEND (追加モード) に _O_WTEXT、_O_U16TEXT、_O_U8TEXT のいずれかを組み合わせて指定した場合、_sopen は、まず、対象のファイルを読み取りおよび書き込みモードで開き、BOM を読み取ってから、書き込み専用モードで開き直します。読み取りおよび書き込みモードでファイルを開くことができなかった場合は、書き込み専用でファイルを開き、Unicode モード設定の既定値を使用します。
shflag 引数は、Share.h で定義されている次のマニフェスト定数のうちの 1 つで構成される定数式です。
_SH_DENYRW
ファイルの読み取りと書き込みを禁止します。_SH_DENYWR
ファイルの書き込みを禁止します。_SH_DENYRD
ファイルの読み取りを禁止します。_SH_DENYNO
読み出しアクセスおよび書き込みアクセスを許可します。
pmode 引数が必要になるのは、_O_CREAT を指定する場合だけです。ファイルがない場合は、pmode でファイルのアクセス許可を指定します。このアクセス許可は、初めて新規ファイルを閉じるときに設定されます。それ以外の場合、pmode は無視されます。pmode は、SYS\Stat.h で定義されている _S_IWRITE マニフェスト定数および _S_IREAD マニフェスト定数の一方または両方を含む整数式です。両方の定数を指定する場合は、ビットごとの OR 演算子で結合します。pmode の意味は、次のとおりです。
_S_IWRITE
書き込み許可。_S_IREAD
読み取り許可。_S_IREAD | _S_IWRITE
ファイルの読み取りおよび書き込みを許可します。
書き込み許可属性を指定しないと、ファイルは読み取り専用になります。Windows オペレーティング システムでは、すべてのファイルが読み取り可能です。書き込み専用のアクセス許可を与えることはできません。したがって、_S_IWRITE モードと _S_IREAD | _S_IWRITE モードは等価です。
_sopen は、アクセス許可を設定する前に、現在のファイルのアクセス許可マスクを pmode に適用します。「_umask」を参照してください。
必要条件
ルーチン |
必須ヘッダー |
オプション ヘッダー |
---|---|---|
_sopen |
<io.h> |
<fcntl.h>、<sys/types.h>、<sys/stat.h>、<share.h> |
_wsopen |
<io.h> または <wchar.h> |
<fcntl.h>、<sys/types.h>、<sys/stat.h>、<share.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
「_locking」の例を参照してください。
.NET Framework の相当するアイテム
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。