共用方式為


_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/Ofopen。)

  • _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。 如需詳細資訊,請參閱平台叫用範例

請參閱

參考

低階 I/O

_close

_creat _wcreat

fopen _wfopen

_fsopen _wfsopen

_open _wopen