_umask_s
Задает маску разрешений для файлов по умолчанию. Здесь представлена версия _umask с усовершенствованной безопасностью, как описано в разделе Функции безопасности в CRT.
errno_t _umask_s(
int mode,
int * pOldMode
);
Параметры
[входящий] mode
Параметр разрешений по умолчанию.[исходящий] oldMode
Предыдущее значение параметра разрешений.
Возвращаемое значение
Возвращает код ошибки, если Mode не определяет допустимый режим или указатель pOldMode имеет значение NULL.
Условия возникновения ошибки
mode |
pOldMode |
Возвращаемое значение |
Содержимое oldMode |
---|---|---|---|
any |
NULL |
EINVAL |
без изменений |
недопустимый режим |
any |
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
Чтение и запись разрешены.
Если предоставлены обе константы, они объединяются битовым оператором OR ( | ). Если аргумент mode равен _S_IREAD, чтение не разрешено (файл доступен только для записи). Если аргумент mode равен _S_IWRITE, запись не разрешена (файл доступен только для чтения). Например, если бит записи устанавливается в маске, то все новые файлы будут доступны только для чтения. Обратите внимание, что для операционных систем MS-DOS и Windows, все файлы доступны для чтения; невозможно предоставить им доступ только на запись. Поэтому установка бита чтения в _umask_s не влияет на режимы файла.
Если pmode - не сочетание одной из констант манифеста, или он содержит другой набор констант, функция просто игнорирует их.
Требования
Подпрограмма |
Обязательный заголовок |
---|---|
_umask_s |
<io.h> and <sys/stat.h> and <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
System::IO::File::SetAttributes