_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 );
}
  

.NET Framework 等效项

系统:: IO:: 文件:: SetAttributes

请参见

参考

文件处理

底层I/O

_chmod, _wchmod

_creat, _wcreat

_mkdir, _wmkdir

_open, _wopen

_umask