_umask_s
Задает маску разрешений файла по умолчанию. Версия _umask
с улучшениями безопасности, как описано в функциях безопасности в CRT.
Синтаксис
errno_t _umask_s(
int mode,
int* pOldMode
);
Параметры
mode
Параметр разрешения по умолчанию.
pOldMode
Прежнее значение параметра разрешения.
Возвращаемое значение
Возвращает код ошибки, если mode
не указан допустимый режим или pOldMode
указатель NULL
.
Условия ошибок
mode |
pOldMode |
Возвращаемое значение | Содержимое pOldMode |
---|---|---|---|
любое | NULL |
EINVAL |
не изменено |
недопустимый режим | любое | EINVAL |
не изменено |
Если возникает одно из указанных выше условий, вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение может быть продолжено, функция _umask_s
возвращает значение EINVAL
и устанавливает параметр errno
в значение EINVAL
.
Замечания
Функция _umask_s
задает маску разрешений для файла текущего процесса в режиме, указанном в mode
параметре . Маска разрешений файла изменяет параметр разрешения для новых файлов, созданных _creat
, _open
или _sopen
. Если бит в битовой маске равен 1, соответствующий бит в запрошенном значении разрешения имеет значение 0 (запрещено). Если бит в битовой маске равен 0, соответствующий бит остается без изменений. Параметр разрешения для нового файла не задан, пока файл не будет закрыт в первый раз.
Целочисленное выражение mode
содержит одну или обе из следующих констант манифеста, определенных в SYS\STAT.H
:
mode |
Description |
---|---|
_S_IWRITE |
Разрешена запись. |
_S_IREAD |
Разрешено чтение. |
_S_IREAD | _S_IWRITE |
Разрешены чтение и запись. |
При указании обеих констант они присоединяются к побитовой оператору OR ( |
). mode
Если аргумент имеет _S_IREAD
значение, чтение не допускается (файл доступен только для записи). mode
Если аргумент имеет _S_IWRITE
значение, запись не допускается (файл доступен только для чтения). Например, если в маске установлен бит записи, все новые файлы будут доступны только для чтения. В MS-DOS и операционных системах Windows все файлы доступны для чтения; Невозможно предоставить разрешение только для записи. Таким образом, установка бита чтения с помощью _umask_s
не влияет на режимы файла.
Если mode
не является сочетанием одной из констант манифеста или включает альтернативный набор констант, функция игнорирует их.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить его, ознакомьтесь с глобальным состоянием в CRT.
Требования
Function | Обязательный заголовок |
---|---|
_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 );
}
Oldmask = 0x0000
См. также
Обработка файлов
Низкоуровневый ввод-вывод
_chmod
, _wchmod
_creat
, _wcreat
_mkdir
, _wmkdir
_open
, _wopen
_umask