_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