_umask_s
設定預設檔案使用權限遮。 這些是 _umask 的安全性增強版本,如 CRT 中的安全性功能中所述。
errno_t _umask_s(
int mode,
int * pOldMode
);
參數
[in] mode
預設使用權限集合。[out] oldMode
使用權限設定先前的值。
傳回值
傳回錯誤碼,如果 Mode 沒有指定有效的方式或 pOldMode 指標是 NULL。
錯誤狀況
mode |
pOldMode |
傳回值 |
oldMode的內容 |
---|---|---|---|
any |
NULL |
EINVAL |
未修改 |
無效的模式 |
any |
EINVAL |
未修改 |
如果以上任何一個錯誤情況發生,無效的參數叫用處理常式,如 參數驗證中所述。 如果允許繼續執行, _umask_s 會傳回 EINVAL 並設定 errno 為 EINVAL。
備註
目前處理序檔案使用權限遮罩套用至這個模式的由 mode指定的 _umask_s 函式集*。*檔案使用權限遮罩修改 _creat、 _open或 _sopen建立的新檔案使用權限設定。 如果遮罩中的位元為 1,對應的位元檔案的要求的使用權限值設為 0 (禁止)。 如果遮罩中的位元為 0,對應的位元會保持不變。 新檔案的使用權限設定未設定,直到檔案第一次關閉。
整數運算式 pmode 包含定義於 SYS\STAT.H 裏的下列資訊清單常值其一或兩者兼有的整數表達式。
_S_IWRITE
允許的寫入。_S_IREAD
允許的讀取。_S_IREAD | _S_IWRITE
允許讀取和寫入。
當給定兩個常值時,它們是以位元 OR 運算連接而已。| ). 如果 mode 引數為 _S_IREAD,將不允許 (檔案唯寫)。 如果 mode 引數為 _S_IWRITE,將不允許寫入 (檔案唯讀)。 例如,在中,如果寫入位元遮罩中設定,所有新的檔案是唯讀的。 請注意與 MS-DOS 和 Windows 作業系統中,所有檔案是可讀取的;寫入唯寫權限是不可能的。 因此,設定會有 _umask_s 讀取的位元對檔案的方式產生任何影響。
如果 pmode 不是其中一個組件資訊清單常數也不會合併替代組常數,函式將會忽略參數。
需求
常式 |
必要的標頭 |
---|---|
_umask_s |
<io.h 和> sys </stat.h 和 sys> /types.h <> |
如需其他相容性資訊,請參閱<簡介>中的相容性。
範例
// crt_umask_s.c
/* This program uses _umask_s 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, err;
/* Create read-only files: */
err = _umask_s( _S_IWRITE, &oldmask );
if (err)
{
printf("Error setting the umask.\n");
exit(1);
}
printf( "Oldmask = 0x%.4x\n", oldmask );
}
.NET Framework 對等用法
System::IO::File::SetAttributes