_umask
設定預設檔案權限遮罩。 如需此函式更安全的版本,請參閱 _umask_s
。
語法
int _umask( int pmode );
參數
pmode
預設權限設定。
傳回值
_umask
會傳回 pmode
的先前值。 不會傳回錯誤。
備註
函式會將 _umask
目前進程的檔案許可權遮罩設定為 所 pmode
指定的模式。 檔案權限遮罩會修改 _creat
、_open
或 _sopen
所建立之新檔案的權限設定。 如果遮罩中的位元為 1,則會將檔案的要求權限值中的對應位元設定為 0 (不允許)。 如果遮罩中的位元為 0,對應的位元會保持不變。 在檔案第一次關閉之前,不會設定新檔案的許可權設定。
整數表示式 pmode
包含下列一個或兩個指令清單常數,定義於 中 SYS\STAT.H
:
pmode |
描述 |
---|---|
_S_IWRITE |
允許寫入。 |
_S_IREAD |
允許讀取。 |
_S_IREAD | _S_IWRITE |
允許讀取和寫入。 |
當兩個常數都得到時,它們會與位 OR 運算子聯結 ( |
。 如果自 pmode
變數為 _S_IREAD
,則不允許讀取 (檔案是唯寫的)。 如果自 pmode
變數為 _S_IWRITE
,則不允許寫入 (檔案是唯讀的)。 比方說,如果遮罩中設定了寫入位元,任何新的檔案將會是唯讀。 在 MS-DOS 和 Windows 作業系統中,所有檔案都是可讀取的;無法授與唯寫許可權。 因此,使用 _umask
設定讀取位元對於檔案的模式沒有作用。
如果 pmode
不是其中一個指令清單常數的組合,或併入一組替代的常數,函式會忽略它們。
根據預設,此函式的全域狀態會限定於應用程式。 若要變更它,請參閱 CRT中的全域狀態。
需求
函式 | 必要的標頭 |
---|---|
_umask |
<io.h> 、 、 <sys/stat.h> <sys/types.h> |
如需相容性詳細資訊,請參閱相容性。
程式庫
所有版本的 C 執行階段程式庫。
範例
// crt_umask.c
// compile with: /W3
// This program uses _umask to set
// the file-permission mask so that all future
// files will be created as read-only files.
// It also displays the old mask.
#include <sys/stat.h>
#include <sys/types.h>
#include <io.h>
#include <stdio.h>
int main( void )
{
int oldmask;
/* Create read-only files: */
oldmask = _umask( _S_IWRITE ); // C4996
// Note: _umask is deprecated; consider using _umask_s instead
printf( "Oldmask = 0x%.4x\n", oldmask );
}
Oldmask = 0x0000
另請參閱
檔案處理
低階 I/O
_chmod
, _wchmod
_creat
, _wcreat
_mkdir
, _wmkdir
_open
, _wopen