_sopen_s, _wsopen_s

abre un archivo para compartir.Éstas son versiones de _sopen y _wsopen con mejoras de seguridad como se describe en Características de seguridad en CRT.

errno_t _sopen_s(
   int* pfh,
   const char *filename,
   int oflag,
   int shflag,
   int pmode
);
errno_t _wsopen_s(
   int* pfh,
   const wchar_t *filename,
   int oflag,
   int shflag,
   int pmode,
);

Parámetros

  • [out] pfh
    El identificador de archivo, o -1 en el caso de un error.

  • [in] filename
    Nombre de archivo.

  • [in] oflag
    tipo de operaciones permitidas.

  • [in] shflag
    tipo de uso compartido permitido.

  • [in] pmode
    configuración de permisos.

Valor devuelto

Devuelve un valor distinto de cero indica un error, en este caso errno se establece en uno de los valores siguientes.

  • EACCES
    La ruta especificada es un directorio, o el archivo es de sólo lectura, pero una operación de la Abrir-para-escritura se probó.

  • EEXIST
    _O_CREATe indicadores de _O_EXCLse especificaron, pero filename ya existe.

  • EINVAL
    oflagno válido, shflag, o argumento depmode , o pfh o filename eran puntero NULL.

  • EMFILE
    No más de descriptores de archivo disponibles.

  • ENOENT
    archivo o ruta no encontrada.

Si un argumento no válido se pasa a la función, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, errno se establece en EINVAL y se devuelve EINVAL .

Para obtener más información sobre éstos y otros códigos de retorno, vea _doserrno, errno, _sys_errlist, y _sys_nerr.

En el caso de un error, -1 se devolverá con pfh (a menos que pfh es un puntero NULL).

Comentarios

La función de _sopen_s abre el archivo especificado por filename y prepara el archivo para leer o escribir compartida, como definido por oflag y shflag._wsopen_s es una versión con caracteres anchos de _sopen_s; el argumento de filename a _wsopen_s es una cadena de caracteres._wsopen_s y _sopen_s se comportan exactamente igual de otra manera.

Asignaciones de la rutina de texto genérico

rutina de Tchar.h

_UNICODE y _MBCS no definido

_MBCS definido

_UNICODE definido

_tsopen_s

_sopen_s

_sopen_s

_wsopen_s

La expresión de entero oflag se forma combinando una o más constantes de manifiesto, definido en el archivo Fcntl.h.Cuando dos o más constantes forman el argumento oflag, se combinan con bit a bit el operador ( | ).

  • _O_APPEND
    Coloca un puntero de archivo en el final del archivo antes de cada operación de escritura.

  • _O_BINARY
    Abra un archivo en modo (sin traducir) binario.(Vea fopen para una descripción del modo binario).

  • _O_CREAT
    Crea y abre el nuevo archivo para escribir.no tiene ningún efecto si existe el archivo especificado por filename .

  • _O_CREAT| _O_SHORT_LIVED
    Cree un archivo como temporal y si es posible no lo vacío en el disco.

  • _O_CREAT| _O_TEMPORARY
    cree un archivo como temporal; se elimina el archivo cuando se cierra el descriptor de archivo pasado.

  • _O_CREAT| _O_EXCL
    devuelve un valor de error si existe el archivo especificado por filename .Solo se aplica cuando se utiliza con _O_CREAT.

  • _O_NOINHERIT
    Evita la creación de un archivo compartido descriptor de archivo.

  • _O_RANDOM
    Especifica principalmente de acceso aleatorio desde el disco.

  • _O_RDONLY
    Abre un archivo para leer solo; no se puede especificar con _O_RDWR o _O_WRONLY.

  • _O_RDWR
    Abre un archivo para la lectura y escritura; no se puede especificar con _O_RDONLY o _O_WRONLY.

  • _O_SEQUENTIAL
    Especifica principalmente de acceso secuencial desde el disco.

  • _O_TEXT
    Abra un archivo en modo de texto (traducido).(Para obtener más información, vea E/S de archivo de texto y el modo binario y fopen.)

  • _O_TRUNC
    Abra un archivo y lo trunca a la longitud cero; el archivo debe tener permisos de escritura.No puede especificar este marcador con _O_RDONLY._O_TRUNCutilizado con _O_CREATabre un archivo existente o cree un nuevo archivo.

    [!NOTA]

    El indicador de _O_TRUNC destruye el contenido del archivo especificado.

  • _O_WRONLY
    Abre un archivo para escribir sólo; no se puede especificar con _O_RDONLY o _O_RDWR.

  • _O_U16TEXT
    Abra el archivo en el modo de Unicode UTF-16.

  • _O_U8TEXT
    Abra el archivo en modo UTF-8 Unicode.

  • _O_WTEXT
    Abra el archivo en el modo de Unicode.

Para especificar el modo de acceso a archivos, debe especificar _O_RDONLY, _O_RDWR, o _O_WRONLY.no hay valor predeterminado para el modo de acceso.

Si _sopen_s lleva _O_WRONLY|_O_APPEND (modo Anexar) y _O_WTEXT, _O_U16TEXT, o _O_U8TEXT, primero se intenta abrir el archivo para leer y escribir, leer el BOM, vuelva a abrirlo para escribir únicamente.Si el archivo se abre para los errores de lectura y escritura, abrirá el archivo para escribir sólo y usará el valor predeterminado para establecer el modo de Unicode.

El argumento shflag es una expresión constante el constar de las constantes de manifiesto siguientes, definidos en Share.h.

  • _SH_DENYRW
    Deniega el acceso de lectura y escritura en un archivo.

  • _SH_DENYWR
    Deniega el acceso de escritura a un archivo.

  • _SH_DENYRD
    Deniega el acceso de lectura a un archivo.

  • _SH_DENYNO
    permite el acceso de lectura y escritura.

El argumento de pmode siempre se requiere, a diferencia de _sopen.Cuando se especifica _O_CREAT, si el archivo no existe, pmode especifica las configuraciones de permisos del archivo, que se establecen cuando se cierra el nuevo archivo por primera vez.si no pmode se omite.pmode es una expresión de tipo entero que contiene una o ambas de las constantes del manifiesto _S_IWRITE y _S_IREAD, definido en SYS \Stat .h.Cuando se dan ambas constantes, se combinan con bit a bit el operador.El significado de pmode es la siguiente.

  • _S_IWRITE
    Escribir permitida.

  • _S_IREAD
    lectura permitida.

  • _S_IREAD | _S_IWRITE
    lectura y escritura permitidas.

Si el permiso de escritura no se especifica, el archivo es de sólo lectura.En el sistema operativo Windows, todos los archivos son legibles; no es posible asignar el permiso de solo escritura.así, los modos _S_IWRITE y _S_IREAD | _S_IWRITE son equivalentes.

_sopen_s aplica la máscara actual de los permisos de archivo a pmode antes de establecer los permisos (vea _umask).

Requisitos

rutina

Encabezado necesario

encabezado opcional

_sopen_s

<io.h>

<fcntl.h> , <sistema/types.h> , <sistema/stat.h> , <share.h>

_wsopen_s

<io.h> o <wchar.h>

<fcntl.h> , <sistema/types.h> , <sistema/stat.h> , <share.h>

Para obtener más información de compatibilidad, vea compatibilidad en la Introducción.

Ejemplo

Vea el ejemplo para el _locking.

Vea también

Referencia

E/S de bajo nivel

_close

_creat, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen