_sopen, _wsopen
Abre um arquivo para o compartilhamento.Versões mais seguras dessas funções estão disponíveis; see _sopen_s, _wsopen_s.
int _sopen(
const char *filename,
int oflag,
int shflag [,
int pmode ]
);
int _wsopen(
const wchar_t *filename,
int oflag,
int shflag [,
int pmode ]
);
Parâmetros
filename
Nome do arquivo.oflag
Tipo de operações permitidas.shflag
Tipo de compartilhamento permitido.pmode
Configuração de permissão.
Valor de retorno
Cada uma dessas funções retorna um descritor de arquivo para o arquivo aberto.
Se filename ou oflag é um NULL ponteiro, ou se oflag ou shflag não é dentro de um intervalo válido de valores, o manipulador de parâmetro inválido é invocado, conforme descrito em Validação de parâmetro.Se a execução terá permissão para continuar, essas funções retornam -1 e defina errno a um dos seguintes valores.
EACCES
Caminho especificado é um diretório, ou arquivo é somente leitura, mas foi tentada uma operação de abrir-para-gravação.EEXIST
_O_CREATe _O_EXCL sinalizadores forem especificados, mas filename já existe.EINVAL
Inválido oflag ou shflag argumento.EMFILE
Não há mais descritores de arquivo disponíveis.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 _sopen função abre o arquivo especificado por filename e prepara o arquivo compartilhado de leitura ou gravação, conforme definido pela oflag e shflag._wsopené uma versão de caractere largo de _sopen; o filename argumento para _wsopen é uma seqüência de caracteres largos._wsopene _sopen 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 |
---|---|---|---|
_tsopen |
_sopen |
_sopen |
_wsopen |
A expressão de inteiro oflag é formado pela combinação de uma ou mais das seguintes constantes manifesto, definidas no arquivo Fcntl.h.Quando dois ou mais constantes formam o argumento oflag, eles são combinados com o (operador bit a bit ou | ).
_O_APPEND
Reposiciona um ponteiro de arquivo para o final do arquivo antes de cada operação de gravação._O_BINARY
Abre um 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.O pmode argumento é 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.O pmode argumento é 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.O pmode argumento é necessário quando _O_CREAT é especificado._O_CREAT| _O_EXCL
Retorna um valor de erro, se um arquivo especificado por 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 principalmente 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; não pode ser especificado com _O_RDONLY ou _O_WRONLY._O_SEQUENTIAL
Especifica principalmente 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ção O _O_TRUNC sinalizador destrói o conteúdo do arquivo especificado.
_O_WRONLY
Abre um 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 _sopen é 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.
O argumento shflag é uma expressão de constante que consiste em uma das seguintes constantes manifesto, definidas em Share.h.
_SH_DENYRW
Nega o acesso de leitura e gravação para um arquivo._SH_DENYWR
Nega o acesso de gravação para um arquivo._SH_DENYRD
Nega o acesso de leitura para um arquivo._SH_DENYNO
Permissões de leitura e gravação acesso.
O pmode argumento é necessário apenas quando um especifica _O_CREAT.Se o arquivo não existir, pmode Especifica as configurações de permissão do arquivo, que são definidas quando o novo arquivo for fechado na primeira vez.Caso contrário, pmode será ignorado.pmodeé uma expressão de inteiros que contém uma ou ambas as constantes de manifesto _S_IWRITE e _S_IREAD, definido em SYS\Stat.h.Quando as duas constantes forem fornecidas, eles são combinados com o operador bit a bit ou.O significado de pmode é o seguinte.
_S_IWRITE
Permissão de escrita._S_IREAD
Permissão de leitura._S_IREAD | _S_IWRITE
Permissão de leitura e gravação.
Se a permissão de gravação não for fornecido, o arquivo é somente leitura.Sob o sistema operacional Windows, todos os arquivos estão legíveis; não é possível conceder a permissão somente para gravação.Assim, os modos de _S_IWRITE e _S_IREAD | _S_IWRITE são equivalentes.
_sopenaplica-se a máscara de permissão de arquivo atual para pmode antes de definir as permissões (consulte _umask).
Requisitos
Rotina |
Cabeçalho necessário |
Cabeçalho opcional |
---|---|---|
_sopen |
<io.h> |
<fcntl.h>, <sys/types.h>, <sys/stat.h>, <share.h> |
_wsopen |
<io.h> ou <wchar.h> |
<fcntl.h>, <sys/types.h>, <sys/stat.h>, <share.h> |
Para obter mais informações de compatibilidade, consulte compatibilidade na introdução.
Exemplo
Consulte o exemplo para _locking.
Equivalência do .NET Framework
Não aplicável. Para chamar a função c padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.