_sopen, _wsopen
打开共享的文件。 这些功能的更安全版本可用; _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。 _wsopen 是 _sopen的宽字符版本;为 _wsopen 的 filename 参数是宽字符字符串。 _wsopen 和 _sopen 否则具有相同的行为。
一般文本例程映射
Tchar.h 实例 |
未定义的 _UNICODE 和 _MBCS |
定义的 _MBCS |
定义的 _UNICODE |
---|---|---|---|
_tsopen |
_sopen |
_sopen |
_wsopen |
整数表达式 oflag 通过将一个或多个文件中 Fcntl.h 窗体以下清单常数,定义。 当两个或多个常数窗体参数 oflag时,这些内容页将使用按位或运算符 ( | ).
_O_APPEND
重新定位一个文件指向文件的末尾在每次写入操作之前。_O_BINARY
在二进制 (未转换的) 模式打开的文件。 (对于二进制模式的说明 fopen 参见。)_O_CREAT
创建并打开编写的新文件。 ,如果 filename 指定的文件存在,不起作用。 pmode 参,在 _O_CREAT 指定时,需要。_O_CREAT| _O_SHORT_LIVED
如果可能,因为临时和不要刷新到磁盘,请创建一个文件。 pmode 参,在 _O_CREAT 指定时,需要。_O_CREAT| _O_TEMPORARY
创建一个文件如临时;,在最后一个文件描述符关闭时,文件被删除。 pmode 参,在 _O_CREAT 指定时,需要。_O_CREAT| _O_EXCL
,如果 filename 指定的文件存在,则返回 false。 应用,仅当使用 _O_CREAT。_O_NOINHERIT
防止一个共享文件描述符的创建。_O_RANDOM
指定母随机访问从磁盘。_O_RDONLY
打开只读的文件;不能指定与 _O_RDWR 或 _O_WRONLY。_O_RDWR
读取和写入中打开的文件;不能指定与 _O_RDONLY 或 _O_WRONLY。_O_SEQUENTIAL
指定母顺序访问从磁盘。_O_TEXT
在文本 (转换) 模式打开的文件。 (有关更多信息,请参见 文本和二进制架构文件 I/O 和 fopen。)_O_TRUNC
打开文件并截断它为零长度;文件必须具有写入权限。 不能指定与 _O_RDONLY的此标志。 _O_TRUNC 使用了 _O_CREAT 打开现有文件或创建一个新文件。备注
_O_TRUNC 标志销毁中指定的文件的内容。
_O_WRONLY
打开只编写的文件;不能指定与 _O_RDONLY 或 _O_RDWR。_O_U16TEXT
打开文件在 Unicode UTF-16 模式。_O_U8TEXT
打开文件在 Unicode UTF-8 模式。_O_WTEXT
打开文件在 Unicode 模式。
若要指定文件访问方法,您必须指定 _O_RDONLY、 _O_RDWR或 _O_WRONLY。 没有访问模式的默认值。
如果 _sopen 调用与 _O_WRONLY|_O_APPEND (累加) 和 _O_WTEXT、 _O_U16TEXT或 _O_U8TEXT,它首先尝试打开读取的文件,并编写,请阅读 BOM,然后重新打开它只编写的。 如果打开读取和写入的文件失败,它将打开只编写的文件并对 Unicode 模式设置为使用默认值。
参数 shflag 是常数表达式包含的一个下面清单常数,定义在 Share.h。
_SH_DENYRW
拒绝文件的读取和写入。_SH_DENYWR
拒绝写入文件。_SH_DENYRD
拒绝文件的读取权限。_SH_DENYNO
读取的许可和写入。
pmode 参数,仅当一个方指定 _O_CREAT时,需要。 如果文件不存在, pmode 指定文件的权限集,设置,则新文件第一次时已关闭。 否则 pmode 被忽略。 pmode 是包含一个或两个清单常数 _S_IWRITE 和 _S_IREAD的整数表达式,定义在 SYS \Stat .h。 当给定时对两个常数,这些内容页将使用按位或运算符。 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 |
有关更多兼容性信息,请参见中介绍的 兼容性 。
示例
为 _locking参见示例。
.NET Framework 等效项
不适用。若要调用标准 C 函数,请使用 PInvoke。有关更多信息,请参见 平台调用示例。