_umask_s
设置默认文件授权掩码。_umask 的版本与安全增强的 CRT中的安全功能如中所述。
errno_t _umask_s(
int mode,
int * pOldMode
);
参数
[in] mode
默认权限集。[out] oldMode
权限集以前的值。
返回值
返回错误代码,如果 Mode 不指定有效的架构或 pOldMode 指针是 NULL。
错误状态
mode |
pOldMode |
返回值 |
目录 oldMode |
---|---|---|---|
任何 |
NULL |
EINVAL |
不修改 |
null 模式 |
任何 |
EINVAL |
不修改 |
如果其中一个以上条件,则无效参数调用处理程序,如 参数验证所述。如果执行允许继续, _umask_s 返回 EINVAL 并将 errno 到 EINVAL。
备注
_umask_s功能将当前的文件授权掩码定向到 mode所指定的模式*。*文件权限掩码修改 _creat、 _open或 _sopen创建的新文件权限集。如果在掩码中的位为 1,对应的位按文件的请求的权限值设置为 0 (禁止)。如果在掩码中的位为 0,对应的位保持不变。新文件的权限集之前,不会设置文件第一次关闭。
整数表达式 pmode 在 SYS \STAT.H 包含以下清单常数之一或两者,定义:
_S_IWRITE
允许的文本。_S_IREAD
允许读取。_S_IREAD | _S_IWRITE
允许读取和写入。
当给定时对两个常数,这些连接与按位 " 或 " 运算符 (| ).如果 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 );
}