Share via


_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.

Retornar valor

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 Retornar valor Conteúdo de pOldMode
qualquer NULL EINVAL não modificado
modo inválido qualquer 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