Compartilhar via


Open, _wopen

Abre um arquivo.Essas funções estão obsoletas porque versões mais seguras disponíveis; see _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
    Nome do arquivo.

  • oflag
    Tipo de operações permitidas.

  • pmode
    Modo de permissão.

Valor de retorno

Cada uma dessas funções retorna um descritor de arquivo para o arquivo aberto.Um valor de retorno de -1 indica um erro, caso em que errno é definida para um dos seguintes valores.

  • EACCES
    Você tentou abrir um arquivo somente leitura para gravação, o modo de compartilhamento do arquivo não permite operações especificadas ou caminho especificado é o diretório.

  • EEXIST
    _O_CREATe _O_EXCL sinalizadores especificados, mas filename já existe.

  • EINVAL
    Inválido oflag ou pmode argumento.

  • EMFILE
    Não há mais descritores de arquivo disponíveis (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

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

Mapeamentos de rotina de texto genérico

Rotina de TCHAR.h

_ Unicode e _ MBCS do arquivo não definido

_ MBCS do arquivo definido

_ Unicode definido

_topen

_open

_open

_wopen

oflaguma expressão de inteiro é formada de uma ou mais das seguintes constantes de manifesto ou combinações de constantes definidas no Fcntl.h.

  • _O_APPEND
    Move o ponteiro do arquivo no final do arquivo antes de cada operação de gravação.

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

  • _O_CREAT
    Cria e abre um novo arquivo para gravação.Não terá efeito se o arquivo especificado pelo filename existe.pmodeargumento é necessário quando _O_CREAT é especificado.

  • _O_CREAT| _O_SHORT_LIVED
    Criar um arquivo como temporário e, se possível não liberou para o disco.pmodeargumento é necessário quando _O_CREAT é especificado.

  • _O_CREAT| _O_TEMPORARY
    Criar um arquivo como temporário. o arquivo é excluído quando o último descritor de arquivo é fechado.pmodeargumento é necessário quando _O_CREAT é especificado.

  • _O_CREAT| _O_EXCL
    Retorna um valor de erro se o arquivo especificado pelo filename existe.Aplica-se somente quando usado 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 para acesso aleatório do disco.

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

  • _O_RDWR
    Abre o arquivo para leitura e escrita; Você não pode especificar esse sinalizador com _O_RDONLY ou _O_WRONLY.

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

  • _O_TEXT
    Abre um arquivo em modo de texto (traduzido).(Para obter mais informações, consulte texto e binário e/S de arquivos de modo e fopen.)

  • _O_TRUNC
    Abre um arquivo e trunca como zero comprimento; o arquivo deve ter permissão de gravação.Você não pode especificar esse sinalizador com _O_RDONLY._O_TRUNCusado com _O_CREAT abre um arquivo existente ou cria um novo arquivo.

    ObservaçãoObservação

    O _O_TRUNC sinalizador destrói o conteúdo do arquivo especificado.

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

  • _O_U16TEXT
    Abra o arquivo no modo Unicode UTF-16.

  • _O_U8TEXT
    Abra o arquivo no modo Unicode UTF-8.

  • _O_WTEXT
    Abra o arquivo no modo Unicode.

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

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

Se _open é chamado com _O_WRONLY|_O_APPEND (modo de acréscimo) e _O_WTEXT, _O_U16TEXT, ou _O_U8TEXT, ele irá tentar abrir o arquivo para leitura e gravação, primeiro leia a BOM e depois reabri-la somente para gravação.Se abrir o arquivo para leitura e gravação falhar, ele irá abri-lo somente para gravação e usar o valor padrão para a configuração do modo Unicode.

Quando dois ou mais constantes manifesto são usados para o formulário de oflag argumento, as constantes são combinadas com o (operador bit a bit ou |).Para uma discussão sobre os modos de texto e binário, consulte texto e binário e/S de arquivos de modo.

O pmode argumento é necessário somente quando _O_CREAT é especificado.Se o arquivo já existir, pmode será ignorado.Caso contrário, pmode Especifica as configurações de permissão do arquivo, que são definidas quando o novo arquivo for fechado na primeira vez._openaplica-se a máscara de permissão de arquivo atual 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 ou ambas das seguintes constantes manifesto, definidas em SYS\Stat.h.

  • _S_IREAD
    Permitido somente de leitura.

  • _S_IWRITE
    Permitida de escrita (efetivamente permite a leitura e gravação).

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

Quando as duas constantes forem fornecidas, elas se unem com o (operador bit a bit ou |).Em Windows NT, todos os arquivos estão legíveis, portanto, a permissão somente para gravação não está disponível. Assim, os modos de _S_IWRITE e**_S_IREAD** | _S_IWRITEsão equivalentes.

Se um valor diferente de opções acima for especificado para pmode (mesmo se ele especificar um assembly válido pmode em outro sistema operacional) ou qualquer valor diferente do permitido oflag valores for especificado, a função gera uma declaração no modo de depuração e chama o manipulador de parâmetro inválido, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, a função retornará -1 e conjuntos de 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 da bibliotecas de tempo de execução c.

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

Equivalência do .NET Framework

Consulte também

Referência

Nível baixo e/S

_chmod, _wchmod

Close

_creat, _wcreat

_dup, _dup2

fopen, _wfopen

_sopen, _wsopen