_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 |
.- . |
有关兼容性的详细信息,请参阅 兼容性。
库
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