Partilhar via


_Open, _wopen

Abre um arquivo.Essas funções são preterido porque versões mais seguras disponível; consulte _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

  • nome do arquivo
    Nome de arquivo.

  • oflag
    Tipo de operações permitidas.

  • pmode
    Modo de permissão.

Valor de retorno

Cada uma dessas funções retornará um descritor de arquivo para o arquivo aberto.Um valor retornado-1 indica um erro, na qual caso errno é conjunto a um dos seguintes valores.

  • EACCES
    Tentar em em aberto o arquivo somente leitura para gravação, modo de compartilhamento do arquivo não permite operações especificadas ou determinado caminho é o diretório.

  • EEXIST
    _O_CREAT e _O_EXCL sinalizadores especificados, mas nome de arquivo já existe.

  • EINVAL
    De inválidooflag or pmode argumento.

  • EMFILE
    Não há mais descritores de arquivo disponível (muitos arquivos abertos).

  • ENOENT
    Arquivo ou caminho não encontrado.

Para obter mais informações sobre esses e outros códigos de retorno, consulte _doserrno, errno, _sys_errlist e _sys_nerr.

Comentários

The _open função abre o arquivo especificado por nome de arquivo e prepara o arquivo para leitura ou gravação, conforme especificado por oflag._wopen é uma versão de caractere largo da _open; o nome de arquivo argumento _wopen é uma seqüência de caracteres largos. _wopen e _open tenham comportamento idêntico caso contrário.

Mapeamentos de rotina de texto genérica

Rotina tchar.h

_UNICODE e _MBCS não definido

_MBCS definido

_UNICODE definido

_topen

_open

_open

_wopen

oflag é uma expressão de inteiro formada de um ou mais dos seguintes constante manifesto ou combinações de constante definidas no fcntl.h.

  • _O_APPEND
    Move o ponteiro de arquivo para participante do arquivo antes de cada operação de gravar.

  • _O_BINARY
    Abre o arquivo no modo binário (não traduzido).(See fopen para obter uma descrição do modo binário.)

  • _O_CREAT
    Cria e abre um novo arquivo para gravação.Não tem efeito se o arquivo especificado por nome de arquivo existe.pmode argumento é necessário quando _O_CREAT foi especificado.

  • _O_CREAT| _O_SHORT_LIVED
    Crie um arquivo temporário e se possível não liberar para disco.pmode argumento é necessário quando _O_CREAT foi especificado.

  • _O_CREAT| _O_TEMPORARY
    Criar um arquivo sistema autônomo temporários; o arquivo é excluído quando o último descritor de arquivo é fechado.pmode argumento é necessário quando _O_CREAT foi especificado.

  • _O_CREAT| _O_EXCL
    Retorna um valor de erro se o arquivo especificado por nome de arquivo existe.Se aplica somente quando usada com _O_CREAT.

  • _O_NOINHERIT
    Impede a criação de um descritor de arquivo compartilhado.

  • _O_RANDOM
    Especifica que o cache é otimizado para, mas não restrito a, acesso aleatório do disco.

  • _O_RDONLY
    Abre um arquivo para leitura apenas; não pode ser especificado com _O_RDWR ou _O_WRONLY.

  • _O_RDWR
    Aberturas de arquivo para leitura e gravação; não é possível especificar este sinalizar com _O_RDONLY ou _O_WRONLY.

  • _O_SEQUENTIAL
    Especifica que o cache é otimizado para, mas não restrito a, acesso seqüencial do disco.

  • _O_TEXT
    Abre um arquivo no modo de texto (traduzido).(Para obter mais informações, consulte Texto e o modo binário E/s de arquivos and fopen.)

  • _O_TRUNC
    Abre um arquivo e trunca comprimento zero; o arquivo deve ter permissão de gravar.Não é possível especificar este sinalizar com _O_RDONLY. _O_TRUNCusado com _O_CREATAbre um arquivo existente ou cria um novo arquivo.

    Observação:

    O _O_TRUNC sinalizar destrói o Sumário do arquivo especificado.

  • _O_WRONLY
    Abre que o arquivo para gravação apenas; não pode ser especificado com _O_RDONLY ou _O_RDWR.

  • _O_U16TEXT
    em aberto o arquivo no modo Unicode UTF-16.Essa opção está disponível em Visual C++ 2005.

  • _O_U8TEXT
    em aberto o arquivo no modo Unicode UTF-8.Essa opção está disponível em Visual C++ 2005.

  • _O_WTEXT
    Abra o arquivo no modo Unicode.Essa opção está disponível em Visual C++ 2005.

Para especificar o modo de acesso do arquivo, você deve especificar um dos _O_RDONLY, _O_RDWR, ou _O_WRONLY. Não há nenhum valor padrão para o modo de acesso.

If _O_WTEXT é usado para em em aberto um arquivo para leitura, _open lê o início do arquivo e verificar se há uma marca de ordem de byte (BOM). Se houver uma BOM, o arquivo é tratado sistema autônomo UTF-8 ou UTF-16LE dependendo da BOM.Se nenhum BOM estiver presente, o arquivo é tratado sistema autônomo ANSI.Quando um arquivo for aberto para gravação usando _O_WTEXTUTF-16 será usado. If _O_UTF8 é usado, ele sempre é aberto sistema autônomo UTF-8 e, se _O_UTF16 é usado, o arquivo é sempre aberto sistema autônomo UTF-16 independentemente de qualquer marca de ordem de byte ou de configuração anterior.

If _open é chamado com _O_WRONLY|_O_APPEND (modo acrescentar) e _O_WTEXT, _O_U16TEXT, ou _O_U8TEXT, primeiro ele tentará em em aberto o arquivo para leitura e gravação, leia a BOM reabri-lo para gravar apenas. Se em em aberto o arquivo para leitura e gravação falhar, ele será em aberto o arquivo para gravação só e usar o valor padrão para a configuração do modo Unicode.

Quando dois ou mais constantes manifesto são usados para formar o oflag argumento, as constantes são combinadas com o operador OR bit a bit ( |).Para obter uma abordagem dos modos texto e binário, consulte Texto e o modo binário E/s de arquivos.

The pmode o argumento é necessário somente quando _O_CREAT foi especificado. Se o arquivo já existir, pmode é ignorado. Caso contrário, pmode Especifica as configurações de permissão de arquivo, que são definidas quando o novo arquivo for fechado na primeira vez. _open aplica-se a máscara de permissão de arquivo corrente para pmode antes de definir as permissões (para obter mais informações, consulte _umask).pmode é uma expressão de inteiros que contém uma das seguintes constantes manifesto, definidas no SYS\Stat.h ou ambas.

  • _S_IREAD
    Leitura permitido somente.

  • _S_IWRITE
    Gravação permitida (efetivamente permite a leitura e gravação).

  • _S_IREAD | _S_IWRITE
    Permissão de leitura e gravação.

Quando ambas as constantes são determinados, eles fazem parte com o operador OR bit a bit ( |).No Windows NT, todos os arquivos estão legíveis, portanto, permissão somente gravar não está disponível; assim, modos de _S_IWRITE e _S_IREAD | _S_IWRITE são equivalentes.

Se um valor diferente de acima for especificada para pmode (mesmo especificaria válido pmode em Outros sistema operacional) ou qualquer valor diferente do permitido oflag valores é especificada, a função gera uma declaração no modo de depurar e chama o manipulador de parâmetro inválido conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, a função retorna -1 e define errno para EINVAL.

Requisitos

Rotina

Cabeçalho necessário

Cabeçalho opcional

_open

<io.h>

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

_wopen

<io.h> ou <wchar.h>

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

Para obter mais informações de compatibilidade, consulte Compatibilidade na introdução.

Bibliotecas

Todas as versões do C em time de execução bibliotecas.

Exemplo

// 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 );
   }
}

Saída

Open succeeded on input file
Open succeeded on output file

Equivalente do NET Framework

Consulte também

Referência

E/S de nível baixo

_chmod, _wchmod

_Close

_creat, _wcreat

_dup, _dup2

fopen, _wfopen

_sopen, _wsopen