_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