_umask_s

Establece la máscara de permisos de archivo predeterminados. Una versión de _umask con mejoras de seguridad, como se describe en Características de seguridad en CRT.

Sintaxis

errno_t _umask_s(
   int mode,
   int* pOldMode
);

Parámetros

mode
Configuración de permisos predeterminada.

pOldMode
Valor anterior de la configuración de permisos.

Valor devuelto

Devuelve un código de error si mode no especifica un modo válido o si el puntero pOldMode es NULL.

Condiciones de error

mode pOldMode Valor devuelto Contenido de pOldMode
cualquiera NULL EINVAL no modificado
modo no válido cualquiera EINVAL no modificado

Si se da una de las condiciones anteriores, se invoca al manipulador de parámetros no válidos, tal como se explica en Validación de parámetros. Si la ejecución puede continuar, _umask_s devuelve EINVAL y establece errno en EINVAL.

Comentarios

La _umask_s función establece la máscara de permiso de archivo del proceso actual en el modo especificado por mode. La máscara de permisos de archivo modifica la configuración de permisos de los nuevos archivos creados por _creat, _open o _sopen. Si un bit de la máscara es 1, el bit correspondiente del valor de permiso solicitado del archivo se establece en 0 (no permitido). Si un bit de la máscara es 0, el bit correspondiente se deja sin modificar. La configuración de permisos para un archivo nuevo no se establece hasta que se cierra el archivo por primera vez.

La expresión de entero mode contiene una o las dos constantes del manifiesto siguientes, que se definen en SYS\STAT.H:

mode Descripción
_S_IWRITE Escritura permitida.
_S_IREAD Lectura permitida.
_S_IREAD | _S_IWRITE Lectura y escritura permitidas.

Cuando se proporcionan ambas constantes, se combinan con el operador OR bit a bit (|). Si el argumento mode es _S_IREAD, no se permite la lectura (el archivo es de solo escritura). Si el argumento mode es _S_IWRITE, no se permite la escritura (el archivo es de solo lectura). Por ejemplo, si el bit de escritura está establecido en la máscara, los nuevos archivos serán de solo lectura. En los sistemas operativos MS-DOS y Windows todos los archivos se pueden leer; no se puede conceder permiso de solo escritura. Por tanto, el establecimiento del bit de lectura con _umask_s no tiene ningún efecto sobre los modos del archivo.

Si mode no es una combinación de una de las constantes del manifiesto o incorpora un conjunto alternativo de constantes, la función simplemente las omitirá.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiarlo, consulte Estado global en CRT.

Requisitos

Función Encabezado necesario
_umask_s <io.h> y <sys/stat.h> y <sys/types.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// 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

Consulte también

Control de archivos
E/S de bajo nivel
_chmod, _wchmod
_creat, _wcreat
_mkdir, _wmkdir
_open, _wopen
_umask