_sopen _wsopen
開啟檔案以進行共用。這些函式更安全版本都可使用; see _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。 filename引數為_wsopen是寬字元字串。_wsopen與_sopen其他方式完全相同。
泛用文字常式對應
Tchar.h 常式 |
_Unicode 之後,未定義的 _MBCS |
定義的 _MBCS |
定義 _unicode 之後 |
---|---|---|---|
_tsopen |
_sopen |
_sopen |
_wsopen |
整數運算式oflag構成方式結合一個或多個下列資訊清單定義的常數,Fcntl.h 檔案中。當兩個或多個常數形成的引數oflag,將它們結合以位元 OR 運算子 ( | ).
_O_APPEND
重新放置檔案的指標,在每次寫入作業之前檔案的結尾。_O_BINARY
以二進位 (未轉譯的) 的模式來開啟檔案。(請參閱 fopen binary 模式的說明。)_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存在。搭配使用時,才適用_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 時發生字元轉換模式中開啟的檔案。_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 中。時可以使用這兩個常數,它們會與位元 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> |
如需相容性資訊,請參閱相容性在簡介中。
範例
請參閱範例的 _locking。
.NET Framework 對等用法
不適用。 若要呼叫標準的 c 函式,使用PInvoke。 如需詳細資訊,請參閱平台叫用範例。