_open, _wopen

abre un archivo.Se han dejado de utilizar estas funciones porque versiones más seguras están disponibles; vea _sopen_s, _wsopen_s.

int _open(
   const char *filename,
   int oflag [,
   int pmode] 
);
int _wopen(
   const wchar_t *filename,
   int oflag [,
   int pmode] 
);

Parámetros

  • filename
    Nombre de archivo.

  • oflag
    tipo de operaciones permitidas.

  • pmode
    Modo de permiso.

Valor devuelto

Cada una de estas funciones devuelve descriptor de archivo para el archivo abierto.Devuelve un valor de -1 indica un error, en este caso errno se establece en uno de los valores siguientes.

  • EACCES
    Intentado al archivo de sólo lectura abierto para escribir, el modo compartido de archivo no permite operaciones especificadas, o la ruta de acceso especificada es directorio.

  • EEXIST
    _O_CREAT e indicadores de _O_EXCL especificados, pero filename ya existe.

  • EINVAL
    oflag no válido o argumento de pmode .

  • EMFILE
    No más de descriptores de archivo disponibles (demasiados archivos abiertos).

  • ENOENT
    archivo o ruta no encontrada.

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

Comentarios

La función de _open abre el archivo especificado por filename y prepara el archivo para leer o escribir, especificado por oflag._wopen es una versión con caracteres anchos de _open; el argumento de filename a _wopen es una cadena de caracteres._wopen y _open 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

_topen

_open

_open

_wopen

oflag es una expresión de tipo entero formada de uno o más de las constantes de manifiesto siguientes o de las combinaciones constantes definido en Fcntl.h.

  • _O_APPEND
    Mueve el puntero de archivo al final de archivo antes de cada operación de escritura.

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

  • _O_CREAT
    crea y abre un nuevo archivo para escribir.no tiene ningún efecto si existe el archivo especificado por filename .se requiere el argumento depmode cuando se especifica _O_CREAT .

  • _O_CREAT| _O_SHORT_LIVED
    Cree un archivo como temporal y si es posible no lo vacío en el disco.se requiere el argumento depmode cuando se especifica _O_CREAT .

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

  • _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 que almacena en memoria caché se optimiza para, pero no se restringe, acceso aleatorio a desde el disco.

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

  • _O_RDWR
    Archivo de Abrir para la lectura y escritura; no puede especificar este marcador con _O_RDONLY o _O_WRONLY.

  • _O_SEQUENTIAL
    Especifica que almacena en memoria caché se optimiza para, pero no se restringe, acceso secuencial a 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_TRUNC utilizado con _O_CREAT abre un archivo existente o cree un nuevo archivo.

    [!NOTA]

    El indicador de _O_TRUNC destruye el contenido del archivo especificado.

  • _O_WRONLY
    Abra el 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 _O_WTEXT se utiliza para abrir un archivo para leer, _open lee el principio del archivo y la comprobación de una marca de orden de (BOM) bytes.Si hay BOM, el archivo se trata como UTF-8 o UTF-16LE dependiendo de BOM.si no hay BOM presente, el archivo se trata como ANSI.Si se abre para escribir mediante _O_WTEXT, se utiliza UTF-16.Si se utiliza _O_UTF8 , el archivo se abrirá siempre como UTF-8 y si se utiliza _O_UTF16 , el archivo se abrirá siempre como UTF-16 independientemente de cualquier valor o marca de orden de bytes anterior.

Si _open 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.

Cuando dos o más constantes de manifiesto se utilizan para formar el argumento de oflag , las constantes se combinan con bit a bit el operador ( |).Para una descripción del binario y de modos de texto, vea E/S de archivo de texto y el modo binario.

Se requiere el argumento de pmode sólo cuando se especifica _O_CREAT .Si el archivo ya existe, se omite pmode .Si no, pmode especifica la configuración de los permisos de archivo, que se establecen cuando se cierra el nuevo archivo por primera vez._open aplica la máscara actual de los permisos de archivo a pmode antes de establecer los permisos (para obtener más información, vea _umask).pmode es una expresión de tipo entero que contiene una o ambas constantes de manifiesto siguientes, definidos en SYS \Stat .h.

  • _S_IREAD
    La lectura sólo.

  • _S_IWRITE
    Escribir permitida (permite eficazmente leer y escribir).

  • _S_IREAD | _S_IWRITE
    lectura y escritura permitidas.

Cuando se dan ambas constantes, se combinan con bit a bit el operador ( |).En windows NT, todos los archivos son legibles, por lo que el permiso de solo escritura no está disponible; así los modos _S_IWRITE y _S_IREAD | _S_IWRITE es equivalente.

Si un valor distinto de anterior se especifica para pmode (aunque especificaría pmode válido en otro sistema operativo) o cualquier valor distinto de los valores permitidos de oflag se especifica, la función genera una aserción en modo de depuración y invoca el controlador no válido del parámetro tal como se describe en Validación de parámetros.Si la ejecución puede continuar, la función devuelve -1 y establece errno a EINVAL.

Requisitos

rutina

Encabezado necesario

encabezado opcional

_open

<io.h>

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

_wopen

<io.h> o <wchar.h>

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

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

bibliotecas

todas las versiones de Bibliotecas en tiempo de ejecución de C.

Ejemplo

// crt_open.c
// compile with: /W3
/* This program uses _open to open a file
 * named CRT_OPEN.C for input and a file named CRT_OPEN.OUT
 * for output. The files are then closed.
 */
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>

int main( void )
{
   int fh1, fh2;

   fh1 = _open( "CRT_OPEN.C", _O_RDONLY ); // C4996
   // Note: _open is deprecated; consider using _sopen_s instead
   if( fh1 == -1 )
      perror( "Open failed on input file" );
   else
   {
      printf( "Open succeeded on input file\n" );
      _close( fh1 );
   }

   fh2 = _open( "CRT_OPEN.OUT", _O_WRONLY | _O_CREAT, _S_IREAD | 
                            _S_IWRITE ); // C4996
   if( fh2 == -1 )
      perror( "Open failed on output file" );
   else
   {
      printf( "Open succeeded on output file\n" );
      _close( fh2 );
   }
}

Output

Open succeeded on input file
Open succeeded on output file

Equivalente en .NET Framework

Vea también

Referencia

E/S de bajo nivel

_chmod, _wchmod

_close

_creat, _wcreat

_dup, _dup2

fopen, _wfopen

_sopen, _wsopen