_umask_s
Define a máscara de permissão de arquivo padrão. Uma versão de _umask
com aprimoramentos de segurança, conforme descrito em Recursos de segurança no CRT.
Sintaxe
errno_t _umask_s(
int mode,
int* pOldMode
);
Parâmetros
mode
Configuração de permissão padrão.
pOldMode
O valor anterior da configuração de permissão.
Valor retornado
Retorna um código de erro se mode
não especifica um modo válido ou o ponteiro pOldMode
for NULL
.
Condições de erro
mode |
pOldMode |
Valor retornado | Conteúdo de pOldMode |
---|---|---|---|
any | NULL |
EINVAL |
não modificado |
modo inválido | any | EINVAL |
não modificado |
Se uma das condições de erro acima ocorrer, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução puder continuar, _umask_s
retornará EINVAL
e definirá errno
como EINVAL
.
Comentários
A _umask_s
função define a máscara de permissão de arquivo do processo atual para o modo especificado por mode
. A máscara de permissão de arquivo modifica a configuração de permissão de novos arquivos criados por _creat
, _open
ou _sopen
. Se um bit na máscara for 1, o bit correspondente no valor da permissão solicitada do arquivo será definido como 0 (não permitido). Se um bit na máscara for 0, o bit correspondente será deixado inalterado. A configuração de permissão para um novo arquivo não é definida até que o arquivo é seja fechado pela primeira vez.
A expressão de inteiro mode
contém uma ou ambas as seguintes constantes de manifesto, definidas em SYS\STAT.H
:
mode |
Descrição |
---|---|
_S_IWRITE |
Gravação permitida. |
_S_IREAD |
Leitura permitida. |
_S_IREAD | _S_IWRITE |
Leitura e gravação permitidas. |
Quando as duas constantes são informadas, elas são ingressadas com o operador OR bit-a-bit (|
). Se o argumento mode
for _S_IREAD
, a leitura não será permitida (o arquivo será somente gravação). Se o argumento mode
for _S_IWRITE
, a gravação não será permitida (o arquivo será somente leitura). Por exemplo, se o bit de gravação estiver definido na máscara, quaisquer novos arquivos serão somente leitura. Nos sistemas operacionais MS-DOS e Windows, todos os arquivos são legíveis e não é possível conceder permissão somente gravação. Portanto, a configuração do bit de leitura _umask_s
não tem efeito nos modos do arquivo.
Se mode
não for uma combinação de uma das constantes do manifesto nem incorporar um conjunto alternativo de constantes, a função as ignorará.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar isso, confira Estado global no CRT.
Requisitos
Função | Cabeçalho necessário |
---|---|
_umask_s |
<io.h> e <sys/stat.h> e <sys/types.h> |
Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
// 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
Confira também
Manipulação de arquivos
E/S de baixo nível
_chmod
, _wchmod
_creat
, _wcreat
_mkdir
, _wmkdir
_open
, _wopen
_umask